SQL QUERY在一行中进行多次搜索,以查找同一表中另一行的数据

时间:2013-10-13 01:25:06

标签: php mysql sql

我需要一些代码的帮助

我有一个名为“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,但我不知道如何使它有效。

非常感谢。

1 个答案:

答案 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

此链接有更多变化: