sql - 具有递归和更新内连接的 MariaDB SQL
问题描述
询问:
WITH RECURSIVE CTE AS(
SELECT 1 AS b, 10 AS a
UNION ALL
SELECT b+1, a+10 FROM CTE WHERE b < 5 )
UPDATE uptable a
INNER JOIN
(
SELECT b,a
FROM CTE
) c
ON a.a = c.b
SET a.a = c.a
桌子:
UPTABLE(
a INT
)
数据 1,2,3,4,5
发生 SQL 语法错误。
EverSQL SQL 查询语法检查和验证器 此查询有效
解决方案
https://mariadb.com/kb/en/with/显示语法参考:
WITH [RECURSIVE] table_reference [(columns_list)] AS (
SELECT ...
)
[CYCLE cycle_column_list RESTRICT]
SELECT ...
它支持在其他 SQL 语句之前使用 CTE,SELECT
但不支持在其他 SQL 语句之前使用,例如UPDATE
.
其他一些 SQL 实现支持 CTE 语法UPDATE
,包括MySQL 8.0、PostgreSQL、SQLite、Microsoft SQL Server、Informix ...
MariaDB 显然实现了该功能的一个子集。
推荐阅读
- javascript - 需要 JSON 文件时 JSON 输入意外结束
- php - Regex to check the existence of a string in another string
- powershell - 修改用户对象并将修改推送回 Active Directory
- php - 当订单状态更改为自定义状态时,WooCommerce 不发送电子邮件
- asp.net - 我们是否需要 NGRX 进行任何角度开发?
- c++ - QPrinter 为 PDF 和物理打印机提供不同的字体间距
- assimp - 如何使用 gltf 格式通过 Assimp 加载粗糙度/金属贴图?
- firebase - 如何将可观察的数据数组的可观察对象转换为可观察的数据数组
- java - 如何使用 OLINGO 从 ODATA 的多个嵌套扩展中提取数据?
- asp.net-core - 将策略应用于 asp.net 核心应用程序中的路径