mysql中删除重复的数据

来源:互联网 发布:superslide.2.1.1.js 编辑:程序博客网 时间:2024/05/20 03:43

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

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可以查询出不一样的记录



原创粉丝点击