看板 Database 關於我們 聯絡資訊
(針對 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
meteor007: 我的想法是,抓出資料庫所有的table,再while loop刪? 08/03 08:13
moyasi: t1每一筆都 loop一次資料庫有t1_seq的table刪掉 08/03 09:44
moyasi: 跟什麼join group union完全沒關係 08/03 09:44
flowwinds: 試過 OR? t1seq=100 OR (t2.t1_seq= OR t3.t1_seq= ) 08/03 12:33
flowwinds: 一次刪多個table的好像不是所有dbms都支援..建議分開用 08/03 12:38
flowwinds: transaction做比較好.. 08/03 12:38
flowwinds: 至於先前推文OR的部分請忽略.. 08/03 12:44
ChingLan326: 考慮用triger或是設定FK嗎 09/01 15:21