SQL 语句“WITH”关键字中的语法错误
Posted
技术标签:
【中文标题】SQL 语句“WITH”关键字中的语法错误【英文标题】:Syntax error in SQL statement "WITH" keyword 【发布时间】:2014-03-27 22:17:20 【问题描述】:jdbc:h2:mem:request_no;MODE=Oracle
我们在 windows 7(64 位)和 jdk 1.7.0_25 中使用 h2 版本 1.3.171。
当我们尝试运行 SQL 语句时:
WITH TMP1 AS (SELECT col1 FROM table1) SELECT TMP1.col1 FROM TMP1
我们得到以下异常:
org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement
"WITH TMP1 AS[*] (SELECT REQUEST_NO FROM QUOTE)
SELECT TMP1.REQUEST_NO FROM TMP1";
expected "., ("; SQL statement:
WITH TMP1 AS (SELECT REQUEST_NO FROM QUOTE)
SELECT TMP1.REQUEST_NO FROM TMP1 [42001-171]
SQL 语句很好,我们可以通过 SQL Developer 成功执行它。
感谢任何帮助。
谢谢。
【问题讨论】:
你用的是什么数据库? H2 不支持正则公用表表达式,它只支持递归 CTE:h2database.com/html/advanced.html#recursive_queries 【参考方案1】:尝试将列定义为 CTE 定义的一部分:
WITH TMP1(REQUEST_NO) AS
(SELECT REQUEST_NO FROM QUOTE
)
SELECT TMP1.REQUEST_NO
FROM TMP1;
我认为某些数据库在使用 with
时需要明确的列列表。
【讨论】:
非常感谢@Gordon Linoff ...我能够按照您的解决方案运行查询。 在一个类似的故事中,我还添加了另一个 TMP2,但无法运行查询...您能帮我解决这个问题吗? WITH TMP1(REQUEST_NO) AS (SELECT REQUEST_NO FROM QUOTE) SELECT TMP1.REQUEST_NO FROM TMP1; WITH TMP1(REQUEST_NO) AS (SELECT REQUEST_NO FROM QUOTE), TMP2(AGENT) AS (SELECT AGENT FROM AGENT_TAB) SELECT TMP2.AGENT FROM TMP2;谢谢你的帮助!!! @Anteneh 。 . .如果您还有其他问题,应将其作为问题而非评论发布。 对不起。我还创建了一个新问题,请您看看...这是链接***.com/questions/22722561/… 非常感谢!!!以上是关于SQL 语句“WITH”关键字中的语法错误的主要内容,如果未能解决你的问题,请参考以下文章
SQL 语句“CREATE TABLE TRIP...”中的语法错误
oracle数据库有没有top这个关键字的。今天用top这个关键字的时候,它提示我的sql语句有语法错误