如何在MySQL中返回以下查询的删除记录?
DELETE t1
FROM t1
LEFT JOIN t2 on (t1.t2_id = t2.id)
WHERE t2.id IS NULL OR t2.is_valid = false
背景:
$ mysql --version
mysql Ver 14.14 Distrib 5.6.23, for osx10.8 (x86_64) using EditLine wrapper
最佳答案
MySQL 没有对应的输出
或returning
其他数据库提供的条款。最好的选择是临时表:
CREATE TABLE TheDeletedIds as
SELECT t1.id
FROM t1 LEFT JOIN
t2
ON t1.t2_id = t2.id
WHERE t2.id IS NULL OR t2.is_valid = false;
DELETE t1
FROM t1
WHERE t1.id IN (SELECT id FROM TheDeletedIds);
然后你刚刚创建的表就有了你想要的id。
注意:重要的是使用新建的表进行删除。否则,另一个线程/进程可能会在您捕获 ID 和删除 ID 之间更改数据。
关于mysql - 在 MySQL 中,我可以在删除后返回已删除的行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33115526/