我有一个包含物品ID和物品价格的表格。我正在运行Oracle。我想得到价格最高的ID(<)。
这适用于MySQL,但不适用于Oracle(为什么不呢??!?)。
SELECT Main.itemid
FROM Main
HAVING MAX(Main.itemprice)
由于我将在另一个嵌套查询中使用它,我需要使用HAVING
使其工作。有任何想法吗?谢谢!
BTW,产生此错误:
ORA-00920: invalid relational operator
答案 0 :(得分:4)
这应该为您提供itemid
的独特列表,其中itemprice
最大(整个表格):
select itemid
from Main
where itemprice=(select max(itemprice) from Main)
group by itemid;
答案 1 :(得分:2)
修改:使用rank()
代替row_number()
,现在应该按照要求执行操作:
获取价格最高的所有项。
SELECT itemid
FROM (
SELECT itemid
,rank() OVER (ORDER BY itemprice DESC) AS rn
FROM Main)
WHERE rn = 1;