我一直试图在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版本中解决此问题。
谢谢。
答案 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
;
我不是很确定,因为它仍然两次引用删除主题,所以它也不起作用。但值得尝试。