Php 检查表中是否存在逗号分隔的值
我有一张桌子:用户组Php 检查表中是否存在逗号分隔的值,php,mysql,Php,Mysql,我有一张桌子:用户组 id | group_id | user_ids ---|----------|--------- 1 | 1 | 3 2 | 1 | 2 3 | 3 | 2 4 | 2 | 3 5 | 2 | 4 6 | 2 | 2 条件是用户ID只能插入一次。但在上述情况下,它是为多个组id插入的 我使用此查询在foreach循环中插入users\u id字段: 将值(2,3)插入用户组(
id | group_id | user_ids
---|----------|---------
1 | 1 | 3
2 | 1 | 2
3 | 3 | 2
4 | 2 | 3
5 | 2 | 4
6 | 2 | 2
条件是用户ID只能插入一次。但在上述情况下,它是为多个组id插入的
我使用此查询在foreach循环中插入users\u id字段:
将值(2,3)插入用户组(组id,用户id)
如何防止插入重复的用户ID
有更好的查询吗?是的,有更好的方法解决这个问题,但解决方案并不意味着查询 您应该创建一个名为
user\u id
的新列,而不是user\u id
列,并添加如下数据:
id | group_id | user_id
1 | 1 | 3
2 | 1 | 4
3 | 2 | 3
4 | 2 | 4
5 | 2 | 2
6 | 3 | 2
7 | 3 | 3
8 | 3 | 4
这称为
多对多
关系,使一切变得更容易。之后,您只需加入表 是的,有更好的方法解决这个问题,但解决方案并不意味着查询
您应该创建一个名为user\u id
的新列,而不是user\u id
列,并添加如下数据:
id | group_id | user_id
1 | 1 | 3
2 | 1 | 4
3 | 2 | 3
4 | 2 | 4
5 | 2 | 2
6 | 3 | 2
7 | 3 | 3
8 | 3 | 4
这称为
多对多
关系,使一切变得更容易。之后,您只需加入表 我认为您应该首先在只希望具有唯一值的列上创建唯一索引。在这种情况下,它将是用户ID
列。我认为您应该首先在只希望具有唯一值的列上创建唯一索引。在这种情况下,它将是用户id
列。为什么不从规范化数据库开始,这样就没有CSV id列?您应该重新考虑您的模式,使用关系而不是逗号分隔的字符串。这不是您使用关系数据库的方式。您还记得您询问时关于规范化数据库的评论吗?如果你遵循了这个建议,那么你就不会遇到所有这些问题了!谢谢你的建议,马克。我相应地改变了程序。但是现在如何删除重复的值项为什么不从规范化数据库开始,这样就没有CSV id列呢?您应该重新考虑您的模式,使用关系而不是逗号分隔的字符串。这不是您使用关系数据库的方式。您还记得您询问时关于规范化数据库的评论吗?如果你遵循了这个建议,那么你就不会遇到所有这些问题了!谢谢你的建议,马克。我相应地改变了程序。但是现在该怎么做才能删除重复的值呢?我已经根据你的建议编辑了我的问题。请回答我的疑问。我已经根据你的建议编辑了我的问题。请回答我的疑问。