在一个表里,如何查找同时购买物品A,B,C的人。。
人名 购买物品
jet   A
charley B
charley C
tyrone A
tyrrone C
charley C嵌套select语句可以实现,但是这样很难用,如我要查询同时购买四种物品人,就需要嵌套四个select请问有好的方法么?

解决方案 »

  1.   

    select 人名
    from tb
    group by 人名
    having count(distinct 购买物品)=3
      

  2.   

    SELECT 人名
    FROM tb
    GROUP BY 人名
    HAVING COUNT(DISTINCT 购买物品)=3;
      

  3.   

    这样只是select出买过三样物品的,不能指定选出买过哪三样。我上面那个例子不太好,
    如果像下面这样,这个语句就无能为力了。在一个表里,如何查找同时购买物品A,B,C的人。。
    人名 购买物品
    jet A
    charley B
    charley C
    tyrone A
    tyrrone C
    charley C
    tyrone D
    ...
      

  4.   

    select 人名
    from tb
    group by 人名
    having count(distinct 购买物品)=3
    where 购买物品 in (A,B,C)