为啥“缺少右括号”错误?

Posted

技术标签:

【中文标题】为啥“缺少右括号”错误?【英文标题】:why "missing right parenthesis" error?为什么“缺少右括号”错误? 【发布时间】:2012-05-30 21:34:00 【问题描述】:

为什么查询会产生这个错误?

ORA-00907:缺少右括号 00907. 00000 - “缺少右括号”

select * from
(
  (select * from dual) alias1,

  (select * from dual) alias2
)

我在 10g 和 11g 上遇到错误

【问题讨论】:

只去掉外面的() 【参考方案1】:

不正确的 SQL 语法。去掉外圆括号,像这样:

select * from 
(select * from dual) alias1, 
(select * from dual) alias2;

【讨论】:

【参考方案2】:

你的括号是平衡的,但是解析器很混乱,在它的混乱中,它产生了一个次优的错误消息。

你可以这样写:

SELECT *
  FROM (SELECT * FROM Dual) Alias1
  JOIN (SELECT * FROM Dual) Alias2 ON 1 = 1;

【讨论】:

以上是关于为啥“缺少右括号”错误?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Oracle 认为我缺少右括号?

SQL 错误:ORA-00907:缺少右括号 00907。00000 -“缺少右括号”

错误报告 - ORA-00907: 缺少右括号 00907. 00000 - “缺少右括号

ORA-00907: 缺少右括号 00907. 00000 - “缺少右括号” *原因:*操作:行错误:44 列:30

Sql - “缺少右括号”错误解释

错误:ORA-00907:oracle 缺少右括号