【发布时间】:2020-02-01 04:45:53
【问题描述】:
我无法在 MariaDB 中使用 WITH AS。我没有找到说明此版本的 MariaDB 中未使用 WITH AS 的文档。以下是我尝试复制的示例查询:
WITH service_audit AS (
SELECT
id AS service_id
, revision_from AS revision_from
, revision_until AS revision_until
FROM audit
WHERE
( revision_from >= '2019-04-01 00:00:00'
AND revision_from< '2019-09-30 23:59:59'
)
ORDER BY
id, revision_from, revision_until
)
SELECT
service_id
revision_from,
revision_until,
LAG(service_id, 1) OVER (PARTITION BY service_id ORDER BY service_id, revision_from, revision_until) service_id_lag
FROM
service_audit;
这是我得到的错误:
您的 SQL 语法有错误;检查手册 对应于您的 MariaDB 服务器版本,以便使用正确的语法 靠近'service_audit AS ([42000][1064] 你的 SQL 有错误 句法;检查与您的 MariaDB 服务器相对应的手册 在 'service_audit AS ( SELECT id AS servi' at line 1 查询是: WITH service_audit A ...
您可以使用以下方法复制问题:
WITH
cte1 AS (SELECT 'a' as a, 'b' as b FROM dual),
cte2 AS (SELECT 'c' as c, 'd' as d FROM dual)
SELECT b, d FROM cte1 JOIN cte2
WHERE cte1.a = cte2.c;
【问题讨论】:
-
并非所有版本的 MariaDB 都支持 CTE。你用的是什么版本?
-
我正在结束这个问题,因为我的 Mariadb 版本不支持和滞后两者。