原因:MySQL 5.7中带有DELETE语句的liquibase.exception.DatabaseException

时间:2018-10-05 23:20:25

标签: mysql

我一直试图在Mysql 5.7中执行以下查询。

DELETE FROM tablename1 T1
WHERE EXISTS (
SELECT *
FROM tablename1 T2
WHERE T2.code = T1.code
AND T2.dname = T2.dname
AND T2.created_date > T1.created_date
);

但是它抛出了一个错误: 原因:liquibase.exception.DatabaseException:您的SQL语法有错误。查看与您的MySQL服务器版本相对应的手册以获取在'T1

附近使用的正确语法

此查询在Oracle中工作正常,但由于某些原因,“别名”在MySQL 5.7中不起作用 无论如何,我可以在此Mysql 5.7版本中解决此问题。

谢谢。

1 个答案:

答案 0 :(得分:0)

我相当确定问题不是别名,而是子查询要从中删除的表,请尝试执行此操作。

DELETE T1
FROM tablename1 AS T1 
INNER JOIN tablename1 AS T2 
   ON T2.code = T1.code
   AND T2.dname = T2.dname
   AND T2.created_date > T1.created_date
;

我不是很确定,因为它仍然两次引用删除主题,所以它也不起作用。但值得尝试。