当我运行以下查询时:
select
(
select t.person_uid
from table1 t
where t.CELL_PH_NUM = table2.CELL_PH_NUM
and rownum<2
order by t.created desc
)
from temp table2 ;
... Oracle返回以下错误:
ORA-00907:缺少右括号
我无法理解错误在哪里:
order by
,则不会返回错误并且正确执行查询(但不会返回我需要的内容)table2.CELL_PH_NUM
),则不会返回错误并且正确返回查询(但不会返回我需要的内容)错误在哪里?
答案 0 :(得分:3)
您的查询实际上并不是您想要的,因为y = [10, 20]
z = [20, 30]
会在where
之前应用。所以,你没必要得到最新的一行。
不幸的是,Oracle不允许您使用其他级别的子查询,因为相关条款不起作用。但有一个解决方案:
order by
在您问题中的查询版本中,未定义select (select max(t.person_uid) keep (dense_rank first order by t.created desc)
from table1 t
where table1.CELL_PH_NUM = table2.CELL_PH_NUM
)
from temp table2 ;
。这可能与你得到的错误有关。