MySQL - 返回两个表中没有两个值的行

时间:2017-08-30 15:28:02

标签: mysql sql

以下是数据:

tbl_apples

  Name    | Fruit   
+=========+========+

  James   | Apple   
  Marie   | Apple   

tbl_bananas

  Name    | Fruit   
+=========+========+

  James   | Banana
  Timothy | Banana    
  Kevin   | Banana  

我想要退回所有不买苹果或香蕉的名字。所以在这种情况下,除了詹姆斯之外,每个人都是。是否有一种简单的方法可以为大量数据集(数百万)做到这一点?如果可能的话,我希望能够归还那些只买苹果而不是香蕉,或买香蕉而不是苹果的人。 编辑:看起来它可能需要加入,因为我发现香蕉数据和苹果数据存储在两个不同的表中。那么我如何能够凝聚地展示它们然后找出谁只买了一个呢?

1 个答案:

答案 0 :(得分:0)

您可以通过统一表来执行此操作:

select  t.name
from (
    select  a.name, 'Apple' as fruit
    from    tbl_apples a
    union
    select  b.name, 'Banana' as fruit
    from    tbl_bananas b ) t
group by t.name
having count(distinct fruit) < 2