基于另一行的值的不同结果

时间:2017-03-15 09:39:51

标签: mysql

在这个例子中,有没有办法只找到那些连接到香蕉和橙色的不同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

2 个答案:

答案 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个水果,不是香蕉或橙色。