在mysql中,可以利用count()函數來查詢重復字段,該函數能夠返回指定條件的結果,語法為“ SELECT 字段值 COUNT(*) as count FROM 表名 GROUP BY 字段值 having count>1;”。
本教程操作環境:windows10系統、mysql8.0.22版本、Dell G3電腦。
mysql怎樣查詢重復字段
示例? accountinfo 表數據如下:
場景一? ?單個字段重復數據查找 & 去重
我們要把上面這個表中 單個字段 account字段相同的數據找出來。
思路 分三步 簡述:
第一步
要找出重復數據,我們首先想到的就是,既然是重復,那么 數量就是大于 1? 就算是重復。 那就是 count 函數 。
因為我們要排查的是 單個 字段account ,那么就是需要按照 account 字段 維度 去分組。? 那就是 group by 函數。
那么我們第一步寫出來的mysql 語句是:
?SELECT?account?,COUNT(account)?as?count?FROM?accountinfo?GROUP?BY?account;
查詢結果如下:
第二步?
沒錯,如我們所想,count大于1的即是 account為 A? 和 B 的數據。
那么我們稍作篩選,只把count大于1的數據的account? 找出來。
?第二步,利用having 拼接篩選條件,寫出來的mysql 語句是:
?SELECT?account?FROM?accountinfo?GROUP?BY?account?HAVING?COUNT(account)?>?1;
查詢結果如下:
?第三步
重復的account數據 A B 都找出來了,接下來我們只需要把account為A 和 B 的其他數據都一起查詢出來。
那就是利用第二步查出來的數據做為子查詢條件,使用 IN 函數。
第三步寫出來的mysql 語句是:
?SELECT?*?FROM??accountinfo?WHERE?account?IN ?( ?SELECT?account?FROM?accountinfo?GROUP?BY?account?HAVING?COUNT(account)?>?1 ?);
查詢結果如下:
可以看到重復的數據都被我們篩選出來了。
推薦學習:mysql視頻教程