Maison  >  Article  >  base de données  >  Quelques instructions SQL complexes pour interroger et supprimer les lignes en double dans Mysql

Quelques instructions SQL complexes pour interroger et supprimer les lignes en double dans Mysql

黄舟
黄舟original
2017-05-21 10:05:571158parcourir

Cet article présente principalement quelques instructions SQL complexes de Mysql ( Requête et Supprimer les lignes en double peuvent s'y référer

).

1. Rechercher les lignes en double

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. Supprimer les lignes en double (en garder une)

PS : à cause de la suppression de MySQL, si c'est le cas. est dans la condition Where de la table supprimée et que la table existe également dans In, elle ne peut pas être supprimée.

/*创建个临时表*/
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;

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn