невозможно использовать WITH AS в 10.1.34-MariaDB - PullRequest
3 голосов
/ 03 октября 2019

Я не могу использовать WITH AS в MariaDB. Я не нашел никакой документации, которая говорит, что WITH AS не используется в этой версии MariaDB. Ниже приведен пример запроса, который я пытаюсь повторить:

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' в строке 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;

Ответы [ 2 ]

3 голосов
/ 03 октября 2019

В этом запросе нет необходимости использовать CTE, вы можете просто превратить его в простой SELECT:

SELECT
    id 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 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
3 голосов
/ 03 октября 2019

Общее табличное выражение WITH было введено в MariaDB 10.2.1.

из здесь (буквально мой первый результат в Google из поиска "mariadb with«)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...