老张小站

  1. 欢迎光临

    感谢访问老张的博客!

  • 1
2,276

MySQL中Delete删除多表关联数据

分类 网站技术/村民张先生 发布于 2016-04-11 15:33
0

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

where 后可以自行添加其它多个条件,例如:

DELETE FROM uc_pm_indexes USING uc_pm_indexes,uc_pm_messages_0 WHERE uc_pm_indexes.plid=uc_pm_messages_0.plid AND uc_pm_messages_0.message like '%关键字%';

此语句表示:当 uc_pm_messages_0 表的 message 字段中存在指定关键字时,将该行中 plid 对应的 uc_pm_indexes 表中相同 plid 的行删除。

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

摘录自:http://www.111cn.net/database/mysql/51146.htm
第一节中部分内容为原创。

欢迎转载分享,转载请注明 来源:大张小站 https://www.zhang.cq.cn/20161680.html
若您喜欢这篇文章,欢迎订阅老张小站以获得最新内容。 / 欢迎交流探讨,请发电子邮件至 mail[at]vdazhang.com 。


欢迎谈谈你的看法(无须登录) *正文中请勿包含"http://"否则将被拦截