如何在同一个表中查询,比较字段数?

时间:2014-04-30 22:22:35

标签: sql count group-by

我需要查询一个表,其中一个字段的数量应该等于另一个表,在同一个表中,对于同一个组。

这是我的表:

ID  BUYER   CAR
1   1   Audi
2   1   Audi
3   1   BMW
4   1   BMW
5   2   Audi
6   2   Audi
7   2   BMW
8   2   BMW
9   2   BMW

如果买家购买了相同数量的奥迪而不是宝马,我需要得到,如果不是,那些行不应该被取回。

所以,有了这个逻辑,查询应该只返回买方1的所有行,因为他买了2辆奥迪和2辆宝马。

这将是返回表:

ID  BUYER   CAR
1   1   Audi
2   1   Audi
3   1   BMW
4   1   BMW

希望你能帮助我。

这是表格:

http://sqlfiddle.com/#!3/853fa/3

1 个答案:

答案 0 :(得分:0)

按买方分组并使用having子句按宝马和奥迪计算过滤。然后选择找到的买家的所有记录。

select *
from mytable
where buyer in
(
  select buyer 
  from mytable
  group by buyer
  having 
    sum(case when car = 'BMW' then 1 end) =
    sum(case when car = 'Audi' then 1 end)
);