[SQL ] delete data in mutiple table

作者: phycheout (等待紅顏老)   2017-08-03 06:19:57
(針對 SQL 語言的問題,用這個標題。請用 Ctrl+Y 砍掉這行)
資料庫名稱:MySQL
資料庫版本:
內容/問題描述:
想請教一個算是比較基本的語法
我現在有很多張表(這裡我簡化成3張表)
第二張到最後一張表都有一個field叫做t1_seq
這個欄位表示第一張表的seq
現在我想要把t1中的seq=100這筆資料刪掉
順便我把所有其他表裡面t1_seq=100也刪掉
要怎麼做呢
t1{
seq
}
t2{
seq
t1_seq
}
t3{
seq
t1_seq
}
目前我的寫法是
delete t1,t2,t3 from t1, t2, t3
where t1.seq='100' and
t2.t1_seq=t1.seq and
t3.t1_seq=t1.seq
這樣子做會發生一個問題
當三張表都有 seq= '100'(t1) t1_seq='100'(t2,t3)時
可以順利刪除成功
但假設t3裡面沒有t1_seq='100'的話
t1,t2中的東西也無法被刪除
目前想到就是拆開來 一個一個去delete
是否可以教我如何用更簡單的方式來寫
join group union之類的東西一直沒學好
應該可以很簡單的用一個statement解決這個事情
謝謝
作者: meteor007 (meteor007)   2017-08-03 08:13:00
我的想法是,抓出資料庫所有的table,再while loop刪?
作者: moyasi (Simple Life)   2017-08-03 09:44:00
t1每一筆都 loop一次資料庫有t1_seq的table刪掉跟什麼join group union完全沒關係
作者: flowwinds (..)   2017-08-03 12:33:00
試過 OR? t1seq=100 OR (t2.t1_seq= OR t3.t1_seq= )一次刪多個table的好像不是所有dbms都支援..建議分開用transaction做比較好..至於先前推文OR的部分請忽略..
作者: ChingLan326 (總舵主)   2017-09-01 15:21:00
考慮用triger或是設定FK嗎

Links booklink

Contact Us: admin [ a t ] ucptt.com