Mysql中查詢與刪除重復行的一些復雜的sql語句

這篇文章主要介紹了mysql一些復雜的sql語句(mysqlmysql重復的行),需要的朋友可以參考下

1.查找重復的行

SELECT?*?FROM?blog_user_relation?a?WHERE?(a.account_instance_id,a.follow_account_instance_id)?  IN?(SELECT?account_instance_id,follow_account_instance_id?FROM?blog_user_relation?GROUP?BY?account_instance_id,?follow_account_instance_id?HAVING  ?COUNT(*)?>?1)

2.刪除重復的行(保留一條)

PS:因為mysqlmysql,如果被刪的表的where條件里有in,且in里面也有此表,那就刪除不了。

/*創建個臨時表*/  CREATE?TABLE?blog_user_relation_temp?AS  (  ?SELECT?*?FROM?blog_user_relation?a?WHERE?  ?(a.account_instance_id,a.follow_account_instance_id)?  ?IN?(?SELECT?account_instance_id,follow_account_instance_id?FROM?blog_user_relation?GROUP?BY?account_instance_id,?follow_account_instance_id?HAVING?COUNT(*)?>?1)  ?AND?  ?relation_id?  ?NOT?IN?(SELECT?MIN(relation_id)?FROM?blog_user_relation?GROUP?BY?account_instance_id,?follow_account_instance_id?HAVING?COUNT(*)>1));    /*刪除數據*/  DELETE?FROM?`blog_user_relation`?WHERE?relation_id?IN?(SELECT?relation_id?FROM?blog_user_relation_temp);    /*刪除臨時表*/  DROP?TABLE?blog_user_relation_temp;

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享