mysql一条SQL清理用户的4步操作步骤(顺序一旦写错就翻车)
更新时间:2026年07月28日 09:17:00 作者:XYiFfang
这篇文章主要介绍了mysql一条SQL清理用户的4步操作步骤的相关资料,从子表到父表逐层删除,再套上事务兜底,按正确顺序执行,避免外键报错或残留垃圾,需要的朋友可以参考下
场景
老板一句话:“把手机号 1381234**** 开头的用户全部清掉!”
我们写了 4 条 DELETE,再套上事务,就像拆积木一样,一拆到底。
但顺序错了会报错或留下垃圾数据,今天用大白话讲明白。
先删子,再删父

4 步操作速览
| 步骤 | 目标表 | 删除条件 | 删除内容 | 必须排第几步? |
|---|---|---|---|---|
| ① | order_item | 订单号在 1381234 用户的订单里 | 订单明细 | 第1️⃣ 步(子表) |
| ② | orders | 用户手机 1381234% | 订单 | 第2️⃣ 步 |
| ③ | coupon | 同上 | 优惠券 | 第3️⃣ 步 |
| ④ | user | 同上 | 用户本人 | 第4️⃣ 步(根表) |
为什么要包一层事务?
| 事务关键词 | 大白话解释 |
|---|---|
START TRANSACTION | 开工! |
COMMIT | 全部成功,盖章生效 |
ROLLBACK | 中途出错,一键撤销,谁也不吃亏 |
顺序写错的后果
| 错误顺序示例 | 当场后果 |
|---|---|
先删 user | 子表 orders 还引用它 → 外键报错 ❌ |
先删 orders | order_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清理用户内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
详解mysql 使用left join添加where条件的问题分析
这篇文章主要介绍了详解mysql 使用left join添加where条件的问题分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-02-02
mysql 8.0.12 安装配置方法图文教程(windows10)
这篇文章主要为大家详细介绍了windows10下mysql 8.0.12 安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2018-08-08


最新评论