简单的sql计数和子查询

时间:2014-06-06 20:44:40

标签: mysql sql

我目前正在做一个SQL问题。

问:使用产品表,找出只生产一种型号的制造商数量。

数据库方案由四个表组成: 产品(制造商,型号,类型)

“产品”表包含有关制造商,型号和类型(“PC”,“笔记本电脑”或“打印机”)的信息。假设Product表中的型号对于所有制造商和产品类型都是唯一的。

查询:

select count(maker) from product group by maker having count(model)=1

Select count(*) from (select maker from product group by maker having count(model)=1)as A

我想知道这两个查询之间的区别对我来说看起来是一样的,但显然第二个是正确的。

1 个答案:

答案 0 :(得分:3)

让我们看看第一个查询。

create table product ( maker int not null, model int not null );
insert into product (maker, model) values (1,1),(1,2),(2,1),(3,1),(4,1),(5,1);

select maker from product group by maker having count(model)=1
MAKER      
-------
      2
      3
      4
      5

即。制造商2,3,4,5只有一种产品。

select count(maker) from product group by maker having count(model)=1

每个制造商都出现了,即

-------
      1
      1
      1
      1

另一方面,另一个问题将计算有多少制造商:

select count(*) from (select maker from product group by maker having count(model)=1)

--------
      4