程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql一些復雜的sql語句(查詢與刪除重復的行)

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

編輯:MySQL綜合教程

Mysql一些復雜的sql語句(查詢與刪除重復的行)。本站提示廣大學習愛好者:(Mysql一些復雜的sql語句(查詢與刪除重復的行))文章只能為提供參考,不一定能成為您想要的結果。以下是Mysql一些復雜的sql語句(查詢與刪除重復的行)正文


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

投稿:mdxy-dxy

這篇文章主要介紹了Mysql一些復雜的sql語句(查詢與刪除重復的行),需要的朋友可以參考下

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:因為mysql的delete,如果被刪的表的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;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved