MySQL中delete结合exist删除数据

原文链接: https://blog.csdn.net/gateway6143/article/details/41113469

EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False。

错误用法:

delete from TableA
 where exists 
 (
 select a.*
 from TableA a, TableB b 
 where a.aname = b.bname and a.asex = b.bsex
 )

这种做法是错误的!这条语句的意思是:判断AB两个表是否有相同名字的记录,如果有,就把A表删除,所有记录删除,而不是相同名字的那些记录!

所以,切记,Exists只是判断真假!并不能给select和delete提供筛选。

正确用法:

delete TableA 
from TableA a  inner join TableB  b    
on  a.aname = b.bname and a.asex = b.bsex 

注意,不要用left join,因为用左连接,A表还是会全部列出,依然会全部被删除

猜你喜欢

转载自blog.csdn.net/weixin_44455388/article/details/102501167
今日推荐