当前位置: 代码网 > it编程>数据库>Mysql > mysql一条SQL清理用户的4步操作步骤(顺序一旦写错就翻车)

mysql一条SQL清理用户的4步操作步骤(顺序一旦写错就翻车)

2026年07月28日 Mysql 我要评论
场景老板一句话:“把手机号 1381234**** 开头的用户全部清掉!”我们写了 4 条 delete,再套上事务,就像拆积木一样,一拆到底。但顺序错了会报错或留下垃圾数据,

场景

老板一句话:“把手机号 1381234**** 开头的用户全部清掉!”

我们写了 4 条 delete,再套上事务,就像拆积木一样,一拆到底。

顺序错了会报错或留下垃圾数据,今天用大白话讲明白。

先删子,再删父

4 步操作速览

步骤目标表删除条件删除内容必须排第几步?
order_item订单号在 1381234 用户的订单里订单明细第1️⃣ 步(子表)
orders用户手机 1381234%订单第2️⃣ 步
coupon同上优惠券第3️⃣ 步
user同上用户本人第4️⃣ 步(根表)

为什么要包一层事务?

事务关键词大白话解释
start transaction开工!
commit全部成功,盖章生效
rollback中途出错,一键撤销,谁也不吃亏

顺序写错的后果

错误顺序示例当场后果
先删 user子表 orders 还引用它 → 外键报错 ❌
先删 ordersorder_item 还引用 orders → 依旧报错 ❌

正确完整代码

start transaction;

-- 1️⃣ 删订单明细
delete from order_item
where order_id in (
  select o.id
  from orders o
  join user u on u.id = o.user_id
  where u.phone like '1381234%'
);

-- 2️⃣ 删订单
delete from orders
where user_id in (
  select id from user where phone like '1381234%'
);

-- 3️⃣ 删优惠券
delete from coupon
where user_id in (
  select id from user where phone like '1381234%'
);

-- 4️⃣ 删用户
delete from user
where phone like '1381234%';

commit;

一句话总结

先拆子,再拆父,事务兜底,顺序不乱,数据就干净!

总结

到此这篇关于mysql一条sql清理用户的4步操作步骤的文章就介绍到这了,更多相关mysql sql清理用户内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com