mysql - 在 MySQL 中,我可以在删除后返回已删除的行吗?

标签 mysql

如何在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/

相关文章:

java - 连接链接失败MySQL

php - 单条数据为null也无法获取到JsonResponse

mysql - 返回一系列表条目中的第二行

MySQL:对多个内部联接表使用 Case When Then End

mysql - 获取最新结果 - mysql,左连接

MySQL 内连接同一字段两次不同标签

mysql - RDBM 与 Java 应用程序的比较

php - preg_replace 对专业人士来说很容易

mysql - Drupal 8 - 具有共享表(用户表/所有表)的多站点?

mysql - AWS RDS 错误代码 : 2013 Lost Connection to MySQL server during Query