这是查询的一部分,该查询在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服务器版本相对应的手册,以在')附近使用正确的语法,然后在第13行0 \ n ELSE COALESCE(abc.rank,0)\ n END AS interesti'“


似乎遵循MySQL case operator语法很好。为什么会发生此错误?

最佳答案

直接减去间隔是PostgreSQL的事情,在MySQL / MariaDB上不起作用。

您可以改为使用DATE_SUB()函数。

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

关于mysql - 将SQL查询从Postgres移到MariaDB时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54237836/

10-14 15:56