是否有替代方法可以重新编写以下oracle查询而不使用子查询
SELECT COL1,COL2 FROM TABLE WHERE COL2 IN (SELECT MAX(COL2) FROM TABLE)
编辑:只有一个表格有COL1和COL2,其中行的最大值为 COL2是预期的输出
答案 0 :(得分:6)
SELECT COL1,COL2
FROM TABLE
ORDER BY COL2 DESC
FETCH FIRST 1 ROW WITH TIES
答案 1 :(得分:2)
这个也应该有效:
SELECT MAX(COL1) KEEP (DENSE_RANK LAST ORDER BY COL2) as COL1,
MAX(COL2) as COL2
FROM TABLE;
答案 2 :(得分:1)
使用PARTITION键找出col1的最大col2,如下所示:
select COL1, COL2 from (
select COL1, COL2, ROW_NUMBER() over(PARTITION BY COL1 ORDER BY COL2 desc) row_num from TABLE
) where row_num=1;
答案 3 :(得分:0)
假设COL1可以用作候选键 -
SELECT T1.COL1,
T1.COL2
FROM TABLE1 T1
INNER JOIN TABLE1 T2
ON (T1.COL1 = T2.COL1
AND T1.COL2 >= T2.COL2)