无法想出一个简单的mysql查询

时间:2014-07-15 10:10:45

标签: mysql sql logic

我现在感到非常愚蠢,因为我遇到了问题,似乎无法弄明白。

非常简单的MySQL表,包含2列:

ID1   |    ID2
 1    |     1
 1    |     2
 2    |     1

不太清楚如何解释这些条件:我想从列ID1中选择值1,因为它与ID2中的值1和2有连接。

这与IN有些相反。

如果我做 SELECT ID1 FROM X WHERE ID2 IN (1,2)我收到了1和2,因为它是重聚。我想要一个像SELECT ID1 FROM X WHERE ID2 IN BOTH 1 AND 2这样的交叉点。

我很确定它与分组有关。

1解决方案是

SELECT * FROM
(SELECT ID1, GROUP_COCAT(ID2) y
FROM X
GROUP BY ID1)t
WHERE t.y = '1,2'

但这不行,因为我不知道顺序(1,2或2,1),我可以有更多的值。

希望这很清楚,我很累。

1 个答案:

答案 0 :(得分:1)

SELECT t.*
FROM TEMP t
WHERE t.id2 IN (1, 2)
GROUP BY t.id1 HAVING COUNT(*) = 2

OR

SELECT t.*
FROM TEMP t
WHERE t.id2 IN (1, 2, 3, 4)
GROUP BY t.id1 HAVING COUNT(*) = 4