【发布时间】:2017-12-30 08:13:10
【问题描述】:
我编写了以下查询,该查询返回的输出没有任何错误消息,但是我发现输出存在问题:
select productid, productname, categoryid, unitprice
FROM production.products as PP
where unitprice in (select min(unitprice) as minprice
from production.products as PC
group by categoryid)
order by categoryid
go
结果:
24 Product QOGNU 1 4.50
3 Product IMEHJ 2 10.00
19 Product XKXDO 3 9.20
21 Product VJZZH 3 10.00
33 Product ASTMN 4 2.50
52 Product QSRXF 5 7.00
54 Product QAQRL 6 7.45
74 Product BKAZJ 7 10.00
13 Product POXFU 8 6.00
输出显示 categoryid = 3 的多行。当我们按 categoryid 分组时,不应该每个 categoryid 只显示一行(最小单价)吗?
我哪里出错了? 提前感谢大家的帮助。
【问题讨论】:
-
您只在子查询中进行分组。此外,您的
IN与每个价格进行比较,而不是产品类别中的价格。检查蒂姆的答案,看看如何使用JOIN
标签: sql sql-server sql-server-2012 group-by correlated-subquery