【问题标题】:Error moving SQL query from Postgres to MariaDB将 SQL 查询从 Postgres 移动到 MariaDB 时出错
【发布时间】:2019-06-11 18:22:51
【问题描述】:

这是在 PostgreSQL 中运行良好的查询的一部分(在 Django 应用程序中):

CASE WHEN abc.name = 'foo bar'
    AND user.first_login <= (now() - interval '{new_user_interval} day') THEN 0
    ELSE COALESCE(abc.rank, 0)
END AS interesting_value,

但是,当我尝试在 MariaDB 数据库中运行它时,我收到此错误:

您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在 ') THEN 0\n ELSE COALESCE(abc.rank, 0)\n END ASinteresti' 附近使用正确的语法,第 13 行"

它似乎遵循 MySQL case operator 语法。为什么会出现这个错误?

【问题讨论】:

    标签: mysql django postgresql mariadb


    【解决方案1】:

    直接减去间隔是 PostgreSQL 的事情,不适用于 MySQL/MariaDB。

    您可以改用DATE_SUB() 函数。

    例如:SELECT DATE_SUB(NOW(), INTERVAL 10 DAY);

    【讨论】:

      【解决方案2】:

      错误的原因是 {new_user_interval} day 周围的单引号。但是请参阅上面@Georgi 的回答,我已经接受了,因为它为我指明了正确的方向。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-02
        • 1970-01-01
        • 2018-01-13
        • 2019-08-26
        • 2020-06-13
        • 2021-01-05
        • 2016-03-25
        • 1970-01-01
        相关资源
        最近更新 更多