微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 将字段与存储在mySQL中的多个ID匹配的最佳方法是什么

我有一个表格,其中包含一个名为“所有者”的列,其中包含与该特定记录相关联的用户的IDS.

我目前用“,”分隔数据.所以举个例子

ID | Name | Owners
1 | Bob | 1,4,5

在对此进行选择时,我打算使用以下sql

select * from table where owner='$profile' or owner like '%,$profile%' or owner like '%$profile,%'

但现在我意识到这是有缺陷的(搜索5将匹配5,15,25甚至50).

这样做的正确方法是什么?

解决方法:

@Amarnasan是正确的:不要在用逗号分隔的单个字段中存储多个值!

在Bill Karwin的sql反模式书中,这被称为Jaywalking反模式.

正确的方法是创建一个将所有者连接到第一个表的交集表.交集表中有多行代表每条记录的多个所有者:

Record_ID | Owners_ID
1 | 1
1 | 4
1 | 5

您的查询将看起来像:

select * from table
join intersection_table
where intersection_table.record_id = table.id
and intersection_table.owners_id = '$profile'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐