我需要一些代码的帮助
我有一个名为“stuff”的数据库表,我有这个信息:
+------+-------------+---------------------+
| id | member_id | group_id |
+------+-------------+---------------------+
| 1 | 11 | aa |
+------+-------------+---------------------+
| 2 | 22 | aa |
+------+-------------+---------------------+
| 3 | 33 | aa |
+------+-------------+---------------------+
| 4 | 44 | bb |
+------+-------------+---------------------+
| 5 | 55 | bb |
+------+-------------+---------------------+
| 6 | 66 | bb |
+------+-------------+---------------------+
如果我搜索一个组中的所有3个成员,我需要找到组ID
类似的东西:
SELECT group_id
FROM stuff
WHERE member_id=11 and member_id=22 and member_id=33
我知道查询不是valit,但我不知道如何使它有效。
非常感谢。
答案 0 :(得分:2)
问题称为Relational Division
。
SELECT group_id
FROM stuff
WHERE member_id IN (11,22,33)
GROUP BY group_id
HAVING COUNT(*) = 3
如果member_id
对于每个group_id
都不是唯一的,则您需要DISTINCT
才能计算唯一值。
SELECT group_id
FROM stuff
WHERE member_id IN (11,22,33)
GROUP BY group_id
HAVING COUNT(DISTINCT member_id) = 3
此链接有更多变化: