插件窝 干货文章 如何通过单条 SQL 语句从三张表中删除与指定 ID 相关的记录?

如何通过单条 SQL 语句从三张表中删除与指定 ID 相关的记录?

删除 DELETE id table 504    来源:    2025-03-30

通过单条SQL语句从多表中删除记录

要从三张表中删除与指定ID相关的记录,你可以使用以下几种方法,具体取决于你使用的数据库系统:

MySQL/MariaDB 解决方案

DELETE t1, t2, t3
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.table1_id
LEFT JOIN table3 t3 ON t1.id = t3.table1_id
WHERE t1.id = ?;

PostgreSQL/SQL Server 解决方案

WITH deleted_ids AS (
    DELETE FROM table1 WHERE id = ? RETURNING id
)
DELETE FROM table2 
WHERE table1_id IN (SELECT id FROM deleted_ids);

DELETE FROM table3 
WHERE table1_id IN (SELECT id FROM deleted_ids);

使用外键约束的级联删除

如果你的表之间有外键约束并设置了ON DELETE CASCADE,只需删除主表记录即可:

DELETE FROM main_table WHERE id = ?;

注意事项

  1. 在执行删除操作前,建议先备份数据
  2. 考虑使用事务确保数据一致性: sql BEGIN TRANSACTION; -- 你的删除语句 COMMIT; -- 或 ROLLBACK; 如果出现问题
  3. 根据你的具体表结构和关系调整JOIN条件
  4. 对于大型表,删除操作可能会影响性能,考虑在非高峰期执行

请根据你的具体数据库系统和表结构调整上述SQL语句。