MySQL中Delete删除多表关联数据
分类 网站技术/村民张先生 发布于 2016-04-11 15:33
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
第一节中部分内容为原创。
欢迎谈谈你的看法(无须登录) *正文中请勿包含"http://"否则将被拦截