尝试在 MySQL 中创建 CTE 时出现语法错误

时间:2021-07-30 19:15:35

标签: mysql mysql-workbench common-table-expression

代码如下:

WITH sub_query AS (Select imdp_title_id FROM movie_ratings) 

输出如下:

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

MySQL 版本:'8.0.26'

使用的软件:MySQL Workbench 8.0

提前致谢。

1 个答案:

答案 0 :(得分:1)

当您使用 CTE 语法时,您必须定义 CTE,然后在 DML 语句中使用该 CTE。

https://dev.mysql.com/doc/refman/8.0/en/with.html 说:

<块引用>

以下示例在 WITH 中定义了名为 cte1 和 cte2 的 CTE 子句,并在紧随其后的顶级 SELECT 中引用它们 WITH子句:

WITH
  cte1 AS (SELECT a, b FROM table1),
  cte2 AS (SELECT c, d FROM table2)
SELECT b, d FROM cte1 JOIN cte2
WHERE cte1.a = cte2.c;

这表明您有一个遵循一个或多个 <cte> AS ( <subquery> ) 定义的最终 SQL 语句。

MySQL 8.0 支持 CTE 之后的 SELECTUPDATEDELETE DML 语句。