我需要编写一个搜索最大值的查询,如果有更多项目具有相同的最大值,它将返回它们。 例如,如果我在我的数据库中
Item Price
Coffee 2.50
Tea 2.50
Cola 1.50
它会给咖啡和茶作为答案。 提前谢谢
答案 0 :(得分:4)
这通常使用窗口函数来解决:
select item,
price
from (
select item,
price,
dense_rank() over (order by price desc) as rnk
from the_table
) t
where rnk = 1;
您没有指定DBMS,因此上面是标准(ANSI)SQL。
答案 1 :(得分:2)
或者......
SELECT
Item,
Price
FROM the_table
WHERE Price = (SELECT MAX(Price) FROM the_table)
或......
SELECT
Item,
Price
FROM the_table
WHERE NOT EXISTS
(
SELECT Price
FROM the_table st
WHERE st.Price > the_table.Price
)
还是再一次......
SELECT
Item,
Price
FROM
the_table
INNER JOIN
(
SELECT MAX(Price) MaxPrice
FROM the_table
) Match ON
the_table.Price = match.MaxPrice
万一窗口函数不可用。