在这个例子中,有没有办法只找到那些连接到香蕉和橙色的不同ID?所以在这种情况下,结果将是ID 2和3(但不是4,因为它也有苹果)。
id fruit
1 apple
1 banana
2 banana
2 orange
3 banana
3 orange
4 apple
4 banana
4 orange
答案 0 :(得分:1)
以下陈述应该有效。
SELECT DISTINCT ID
FROM Table1
WHERE ID NOT IN (SELECT DISTINCT ID
FROM Table1
WHERE fruit NOT IN ('banana', 'orange'));
答案 1 :(得分:0)
使用此
SELECT *
FROM
(SELECT id
FROM tbl
WHERE fruit IN ('banana','orange')
GROUP BY id
HAVING count(*)=2) t1
WHERE t1.id NOT IN
(SELECT id
FROM tbl
WHERE fruit NOT IN ('banana','orange')
GROUP BY id)
第一个派生表t1将给你2,3和4,因为所有3个都有1个香蕉和橙色。现在通过第二个子查询,你可以摆脱4,因为它将返回id,因为它有1个水果,不是香蕉或橙色。