[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