我现在感到非常愚蠢,因为我遇到了问题,似乎无法弄明白。
非常简单的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),我可以有更多的值。
希望这很清楚,我很累。
答案 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