mysql一次刪除兩張表 MySQL一次刪除兩張表

2021-10-18 21:44:47 字數 1349 閱讀 9109

今天遇到了同時刪除兩張表的問題,試了很多方法都沒成功,如果在hibernate的話那就簡單了直接使用級聯就okay了,但用sql語句一時還是沒做出來在網上找到了解決方法(我用的第三種方法):

商品表(product):id  name

表(image):id product_id name

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 條件

前3者是可行的,第4者不可行。

也就是簡單用delete語句無法進行多表刪除資料操作,不過可以建立級聯刪除,

在兩個表之間建立級聯刪除關係,則可以實現刪除乙個表的資料時,同時刪除另乙個表中相關的資料。

1、從資料表t1中把那些id值在資料表t2裡有匹配的記錄全刪除掉

delete t1 from t1,t2 where t1.id=t2.id

或delete from t1 using t1,t2 where t1.id=t2.id

2、從資料表t1裡在資料表t2裡沒有匹配的記錄查詢出來並刪除掉

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、從兩個表中找出相同記錄的資料並把兩個表中的資料都刪除掉

delete t1,t2 from t1 left join t2 on t1.id=t2.id where t1.id=25

注意此處的delete t1,t2 from 中的t1,t2不能是別名

如: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中是可以的)

上述語句改寫成:

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

在資料裡面執行是錯誤的(mysql 版本小於5.0在5.0中是可以的)

附:上述語句執行的環境 mysql 4.0.2以上

分享到:

2010-12-14 20:02

瀏覽 6206

聯合刪除兩張表的資料

大家都知道delete後面不能跟多張表,但有時刪除資料時要同時維護多張表的資料,這怎麼辦呢?假設 a,b兩張表,它們通過id進行關聯,a表中有名稱欄位而b表中沒有,現根據時間段刪除資料 sql declare delid table id int delete a output deleted.id...

MySQL實現兩張表資料的同步

有兩張表a和b,要求往a裡面插入一條記錄的同時要向b裡面也插入一條記錄,向b裡面插入一條記錄的同時也向a插入一條記錄。兩張表的結構不同,需要將其中幾個字段對應起來。可以用下面的觸發器實現。表a的觸發器 begin set disable 1 if disable 1 and not exists s...

MySQL 觸發器例子(兩張表同步增加和刪除)

以下兩個例子來自 實測有效,但是原帖的分隔符不正確,因此稍作修改。例子1 建立兩個表,目的是在乙個表裡新增一條記錄,另乙個表也新增一條記錄 drop table if exists tab1 create table tab1 tab1 id varchar 11 drop table if exi...