[SQL ] delete data in mutiple table

看板Database (資料庫)作者 (等待紅顏老)時間7年前 (2017/08/03 06:20), 編輯推噓1(107)
留言8則, 4人參與, 最新討論串1/1
(針對 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解決這個事情 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 208.101.238.150 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1501712402.A.33B.html

08/03 08:13, , 1F
我的想法是,抓出資料庫所有的table,再while loop刪?
08/03 08:13, 1F

08/03 09:44, , 2F
t1每一筆都 loop一次資料庫有t1_seq的table刪掉
08/03 09:44, 2F

08/03 09:44, , 3F
跟什麼join group union完全沒關係
08/03 09:44, 3F

08/03 12:33, , 4F
試過 OR? t1seq=100 OR (t2.t1_seq= OR t3.t1_seq= )
08/03 12:33, 4F

08/03 12:38, , 5F
一次刪多個table的好像不是所有dbms都支援..建議分開用
08/03 12:38, 5F

08/03 12:38, , 6F
transaction做比較好..
08/03 12:38, 6F

08/03 12:44, , 7F
至於先前推文OR的部分請忽略..
08/03 12:44, 7F

09/01 15:21, , 8F
考慮用triger或是設定FK嗎
09/01 15:21, 8F
文章代碼(AID): #1PWb0ICx (Database)
文章代碼(AID): #1PWb0ICx (Database)