在oracle db中查询时缺少右括号

时间:2016-10-25 14:01:38

标签: oracle

我正在使用以下查询:

Select identifier 
from batch_instance 
where batch_class_id IN ( Select id 
                          from batch_class  
                          where ROWNUM <2 AND 
                          batch_class_name='abc' 
                          ORDER BY creation_date DESC);

PFB错误:

  

第1行的错误:   ORA-00907:缺少右括号

1 个答案:

答案 0 :(得分:1)

子查询(假设它已修复)将仅返回一行。所以它只返回一个id。在这种情况下,使用IN条件没有意义,“相等”比较会产生相同的效果。

要选择与名称id关联的最新'abc',您可以使用keep (dense_rank last),因此它仍然在一个子查询中完成 - 您不需要嵌套的子查询。类似的东西:

select identifier
from   batch_instance
where  batch_class_id = ( select max(id) keep (dense_rank last order by creation_date)
                          from   batch_class
                          where  batch_class_name =    'abc'
                        )
;