我目前正在做一个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
我想知道这两个查询之间的区别对我来说看起来是一样的,但显然第二个是正确的。
答案 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