天天看點

mysql千萬級資料分組查詢_mysql千萬級資料量查詢出所有重複的記錄

查詢重複的字段需要建立索引,多個條件則建立組合索引,各個條件的索引都存在則不必須建立組合索引

有些情況直接使用GROUP BY HAVING則能直接解決;但是有些情況下查詢緩慢,則需要使用下面其他的方法

以下是本人整理出來的查詢重複資料的SQL,适用于千萬級資料量的MYSQL資料庫。

1.适用于整數類型的

SELECT DISTINCT UId FROM vehicle WHERE 1=1 GROUP BY UId HAVING(COUNT(UId))>1;

2.分組排序

SELECT UId FROM

(

SELECT UId,LicenseNo,IF(@grp=a.UId,@rank:[email protected]+1,@rank:=1) rank,@grp:=a.UId FROM

(SELECT UId,LicenseNo FROM vehicle WHERE 1=1 ORDER BY UId) AS a,(SELECT @grp:=0,@rank:=0) AS b

)AS t

WHERE t.rank=2;

3.适用于字元串類型,包含中文

SELECT DISTINCT(LicenseNo) FROM vehicle a WHERE 1 = 1 AND ((SELECT COUNT(LicenseNo) FROM vehicle WHERE LicenseNo = a.LicenseNo) > 1) ;

4.适用于字元串類型,不包含中文

SELECT DISTINCT (a.CarVIN) FROM vehicle a LEFT JOIN vehicle b ON a.CarVIN=b.CarVIN WHERE 1=1 AND a.id<>b.Id;

轉載 https://mp.weixin.qq.com/s/U5nZ0Ss_oJ3W1CgF3SvtBQ