【问题标题】:Sub query ORA-00907: missing right parenthesis子查询 ORA-00907: 缺少右括号
【发布时间】:2019-01-11 21:36:59
【问题描述】:

执行下面的查询时,我收到以下错误消息

错误信息:

ORA-00907: 缺少右括号

错误信息指向下面的子查询

错误是在

SELECT t4.TIN FROM table4 t4, table5 TRA WHERE .... ORDER BY t4.TIN ASC

我现在不擅长查询,希望有人能指出我做错了什么。

查询

SELECT 
    t1.TIN AS "Employee TIN", 
    t2.NAME AS "Employer Name", 
    MAX(t3.SUMMARY_NUM) AS "Summary Number"
FROM 
    table1 t1, 
    table2 t2, 
    table3 t3
WHERE 
    t1.SUMMARY_YEAR = 2017
    AND t2.TIN = t1.TIN
    AND t3.SUMMARY_NUM = t1.SUMMARY_NUM 
    AND t3.TIN IN(SELECT t4.TIN FROM table4 t4, table5 TRA WHERE .... ORDER BY t4.TIN ASC)
GROUP BY t2.NAME, t1.TIN
ORDER BY t1.TIN ASC

【问题讨论】:

  • 无关,但是:子选择中的order by完全没用
  • 嗯,用“....”替换部分疑似错误的部分并不是最好的选择。旧派隐式, 加入也是如此。也许您想切换到显式 JOIN 语法。
  • @a_horse_with_no_name - 这不是无关的,这正是导致错误的原因。
  • @mathguy 是的,这是真的

标签: sql oracle oracle11g


【解决方案1】:

中删除ORDER BY
(SELECT t4.TIN FROM table4 t4, table5 TRA WHERE .... ORDER BY t4.TIN ASC)

插图:

SQL> select count(*) from emp
  2  where deptno in (select deptno from dept order by dname);
where deptno in (select deptno from dept order by dname)
                                         *
ERROR at line 2:
ORA-00907: missing right parenthesis


SQL> select count(*) from emp
  2  where deptno in (select deptno from dept);

  COUNT(*)
----------
        14

SQL>

【讨论】:

  • 你只是让我免于将服务器扔进垃圾箱谢谢,oracle 总是如此精确,他们的错误消息如此具体。
  • 想想绿色,@Neto Yo :) 如果有帮助,我很高兴。
猜你喜欢
  • 2020-01-04
  • 2018-05-23
  • 2018-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多