mysql中删除重复的数据

xiaoxiao2021-02-28  55

先说一下多表删除的语法(两种):

delete t1 from t1,t2 where t1.id=t2.id and t1.name=t2.name;

意思是:从t1表中删除t1,t2两张表中id和name相同的记录

这个方式对于找条件相同的很适用,但是对于其他则不是很适用,

比如delete t1 from t1,t2 where t1.name!=t2.name;

则会删除t1中所有的记录, where t1.name!=t2.name;这个句子类似于

两个嵌套的for循环,所以会出现上面的情况。

这时,用内连接(inner join),外链接(left join,right join)就很方便了,

delete t1 from t1 left join t2 on t1.name=t2.name where t2.name=null;

就可以删除t1中两表name不同的记录,其实这也类似两个嵌套的for循环

if中的条件就是on后where之前的,where是对t1 left join t2 on t1.name=t2.name

结果的再筛选。

假设t1,t2两张表都是两个字段,id和name

select id,name from t1 left join t2 on t1.name=t2.name;可以理解为以下:

for(t1){

    for(t2){

      if(t1["name"]==t2["name"]) print( t1['id'],t1['name'],t2['id'],t2['name']);

      else print( t1['id'],t1['name'],null,null);

   }

}

所以where t2.name=null可以查询出不一样的记录

转载请注明原文地址: https://www.6miu.com/read-58554.html

最新回复(0)