select ProductID,ProductName,QuantityPerUnit
from Products
where Products.UnitPrice=Max(UnitPrice)
此查询出了什么问题?
我尝试用“具有”代替“ where”标记。
select ProductID,ProductName,QuantityPerUnit
from Products
having Products.UnitPrice=Max(UnitPrice)
它必须以最高单价产生结果,
ProductID ProductName QuantityPerUnit
38 Côte de Blaye 12 - 75 cl bottles
答案 0 :(得分:0)
如果您希望产品的最大数量为UnitPrice
:
select ProductID,ProductName,QuantityPerUnit
from Products
where UnitPrice = (select Max(UnitPrice) from Products)
此查询:
select Max(UnitPrice) from Products
返回最大值UnitPrice
。
如果有多个相同价格的产品,将全部退回。
如果只需要1,则可以使用LIMIT 1
或TOP 1
,具体取决于您使用的rdbms。
答案 1 :(得分:0)
使用子查询查找最高价格
SELECT ProductID, ProductName, QuantityPerUnit
FROM Products
WHERE UnitPrice = (SELECT Max(UnitPrice) FROM Products)
答案 2 :(得分:0)
除非在子查询中,否则不能简单地在where子句中使用聚合函数。
尝试:::
select ProductID,ProductName,QuantityPerUnit from Products
Where Products.UnitPrice= (select Max(UnitPrice) from Products)
如果您使用的是TSQL,则最好使用
select top 1 With ties ProductID,ProductName,QuantityPerUnit from Products
Order by UnitPrice desc
这将为您提供所有单价最高的产品,并且由于没有子查询,因此效率很高。
答案 3 :(得分:0)
可以使用HAVING子句
SELECT ProductID, ProductName, QuantityPerUnit FROM Products
GROUP BY ProductID, ProductName, QuantityPerUnit
HAVING UnitPrice = MAX(UnitPrice)
答案 4 :(得分:0)
查询的问题是您在查询中混合了聚合值和原始值。
如果只需要一行,我建议使用另一种方法:
select ProductID, ProductName, QuantityPerUnit
from Products
order by UnitPrice desc
fetch first 1 row only;
尽管fetch first
是标准SQL,但并非所有数据库都支持它,因此您可能需要数据库的适当语法。
答案 5 :(得分:0)
我尝试过的是:
从产品中选择最大(单价)
选择Max(UnitPrice)ProductID,ProductName,QuantityPerUnit 来自产品 按ProductID,ProductName,QuantityPerUnit分组,最大(UnitPrice)> 200