DELETE刪除多表資料,怎樣才能同時刪除多個關聯表的資料呢?這裡做了深入的解釋:
| 代碼如下 |
複製代碼 |
1 delete from t1 where 條件 2 delete t1 from t1 where 條件 3 delete t1 from t1,t2 where 條件 4 delete t1,t2 from t1,t2 where 條件 |
category(欄目資訊表)和news(新聞資料表)。
category中的id(欄目編號)欄位作為該表的主鍵(primary key).唯一標識了一個欄目的資訊。
news 中的id欄位作為該表的主鍵(primary key).唯一標識了一個欄目的資訊。
category_id(欄目編號)欄位與category表的id欄位相關聯。
1.SQL刪除語句
| 代碼如下 |
複製代碼 |
delete category,news from category left join news on category.id = news.category_id
|
1、從資料表t1中把那些id值在資料表t2裡有匹配的記錄全刪除掉1
| 代碼如下 |
複製代碼 |
DELETE t1 FROM t1,t2 WHERE t1.id=t2.id 或 DELETE FROM t1 USING t1,t2 WHERE t1.id=t2.id |
2、從資料表t1裡在資料表t2裡沒有匹配的記錄尋找出來並刪除掉1
| 代碼如下 |
複製代碼 |
DELETE t1 FROM t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL 或 DELETE FROM t1,USING t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL |
3、 從兩個表中找出相同記錄的資料並把兩個表中的資料都刪除掉1
| 代碼如下 |
複製代碼 |
| DELETE t1,t2 from t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t1.id=25 |
注意此處的delete t1,t2 from 中的t1,t2不能是別名
如:1
| 代碼如下 |
複製代碼 |
delete t1,t2 from table_name as t1 left join table2_name as t2 on t1.id=t2.id where table_name.id=25 |
在資料裡面執行是錯誤的(MYSQL 版本不小於5.0在5.0中是可以的)
上述語句改 寫成1
| 代碼如下 |
複製代碼 |
delete table_name,table2_name from table_name as t1 left join table2_name as t2 on t1.id=t2.id where table_name.id=25
|