Home  >  Article  >  Database  >  Some complex sql statements for querying and deleting duplicate rows in Mysql

Some complex sql statements for querying and deleting duplicate rows in Mysql

黄舟
黄舟Original
2017-05-21 10:05:571161browse

This article mainly introduces Mysql some complex sql statements (Query and Deleteduplicate rows), friends in need can refer to the following

1. Find duplicate rows

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. Delete duplicate rows (keep one)

PS: Because of mysql’s delete, if it is deleted There is in in the where condition of the table, and the table also exists in in, so it cannot be deleted.

/*创建个临时表*/
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 above is the detailed content of Some complex sql statements for querying and deleting duplicate rows in Mysql. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn