Sql Oracle:子查询的替代方案

Sql Oracle:子查询的替代方案,sql,oracle,Sql,Oracle,是否有其他方法可以在不使用子查询的情况下重新编写下面的oracle查询 SELECT COL1,COL2 FROM TABLE WHERE COL2 IN (SELECT MAX(COL2) FROM TABLE) 编辑:只有一个表有COL1和COL2,其中最大值为 COL2是预期输出使用分区键查找col1的最大COL2,如下所示: SELECT COL1,COL2 FROM TABLE ORDER BY COL2 DESC FETCH FIRST 1 ROW WITH TIES sele

是否有其他方法可以在不使用子查询的情况下重新编写下面的oracle查询

SELECT COL1,COL2 FROM TABLE WHERE COL2 IN (SELECT MAX(COL2) FROM TABLE)
编辑:只有一个表有COL1和COL2,其中最大值为
COL2是预期输出

使用分区键查找col1的最大COL2,如下所示:

SELECT COL1,COL2 
FROM TABLE
ORDER BY COL2 DESC
FETCH FIRST 1 ROW WITH TIES
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;

假设COL1可以用作候选密钥-

SELECT T1.COL1,
  T1.COL2
FROM TABLE1 T1
INNER JOIN TABLE1 T2
ON (T1.COL1  = T2.COL1
AND T1.COL2 >= T2.COL2)

这一点也应该起作用:

SELECT MAX(COL1) KEEP (DENSE_RANK LAST ORDER BY COL2) as COL1,
    MAX(COL2) as COL2 
FROM TABLE;

你怎么会这样问?@jarlh试图让这个问题变得更容易理解。表中是否有两行具有相同的col2值,或者col2是唯一的?所有答案都很好。。请务必查看另一个选项的
FIRST
LAST
聚合函数。它是一个子查询。