ORA-00907:缺少右括号---内部查询执行

时间:2016-04-29 19:15:54

标签: sql oracle

select *  from USER_SCHEDULER_JOB_RUN_DETAILS 
 where substr(log_date,1,9) in (
     select substr(log_date,1,9) 
       from USER_SCHEDULER_JOB_RUN_DETAILS 
      where rownum <= 1 ORDER BY LOG_DATE DESC);

当我执行上述查询时,我收到以下错误。

ORA-00907: missing right parenthesis
00907. 00000 -  "missing right parenthesis"
*Cause:   
*Action: 
Error at Line: 7 Column: 55

我尝试执行它正在执行的内部查询,但不确定为什么它在执行整个查询时给我错误。

2 个答案:

答案 0 :(得分:1)

不要在内部查询中使用order by。 试试这个:

select * from USER_SCHEDULER_JOB_RUN_DETAILS 
where substr(log_date,1,9) in 
(select substr(log_date,1,9) from USER_SCHEDULER_JOB_RUN_DETAILS where rownum <= 1 );

答案 1 :(得分:0)

括号中包含额外信息。 ORA-00907

您可以将此查询用作期望

select *
  from USER_SCHEDULER_JOB_RUN_DETAILS
 where substr(log_date, 1, 9) in
       (select MAX(substr(log_date, 1, 9)) over(ORDER BY LOG_DATE desc)
          from USER_SCHEDULER_JOB_RUN_DETAILS
         where rownum <= 1);