首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 多表關聯刪除:DELETE JOIN 語法與跨資料庫對比

     編輯:MySQL 綜合教學

問題背景

需同時刪除主表 t1 與從表 t2 中關聯的資料。早期 MySQL 4.0 不支援多表 DELETE,常被誤導「只能用觸發器/外鍵」。實際 MySQL 4.0+ 已原生支援。

標準語法(MySQL 4.0+)

-- 表結構
CREATE TABLE t1 (id INT PRIMARY KEY, name VARCHAR(20));
CREATE TABLE t2 (id INT PRIMARY KEY, t1_id INT, data VARCHAR(20));
INSERT INTO t1 VALUES (1,'a'),(2,'b');
INSERT INTO t2 VALUES (1,1,'x'),(2,1,'y'),(3,2,'z');

-- 刪除 t1.id=1 及其關聯 t2
DELETE t1, t2 FROM t1 JOIN t2 ON t1.id = t2.t1_id WHERE t1.id = 1;
-- 結果:t1 剩 (2,'b'),t2 剩 (3,2,'z')

跨資料庫多表刪除支援對比

資料庫多表 DELETE替代方案
MySQL 4.0+支援 DELETE t1,t2 FROM t1 JOIN t2 ...-
SQL Server 2008不支援觸發器、OUTPUT 子句、CTE + 多條 DELETE
Oracle不支援標準語法ON DELETE CASCADE 外鍵、PL/SQL 批次、DELETE ... WHERE EXISTS
PostgreSQL不支援ON DELETE CASCADE、CTE 多條 DELETE、規則

不支援多表 DELETE 時的通用替代模式

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved