需同時刪除主表 t1 與從表 t2 中關聯的資料。早期 MySQL 4.0 不支援多表 DELETE,常被誤導「只能用觸發器/外鍵」。實際 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、規則 |