这是查询的一部分,该查询在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/