mysql消除重復數據


原文鏈接:這里
0.前言

消除重復數據分為幾種不同的情況,請參考食用

1.使用DISTINCT 關鍵字。

適用場景:返回的數據有重復的行時,會直接消除掉所有重復的行數據。

例如: 下面這個表,

如果我們執行下面的操作

SELECT DISTINCT  message_id FROM message_receive

返回結果如下:

可以看出,返回的數據沒有任何一個重復的行。我們繼續操作,執行下面的語句

SELECT DISTINCT  message_id,content_type FROM message_receive

這次我們查詢了兩個字段,返回結果如下:

可以看出,沒有任何一行是完全一樣的。

2.HAVING COUNT 關鍵字

COUNT(*) 函數返回在給定的選擇中被選的行數。配合HAVING 關鍵字一同使用。

適用場景:可以用來對結果中某一個字段的唯一性進行篩選,而不管其他字段。

例如:

現在要查兩個字段,在數據庫中字段都是多對多的關系。當我們確定一個一個字段時,就可以利用這個來進行篩選。

select user_id,user_account,name,is_read,message_id
FROM user,message_receive
WHERE message_id = 1615373423
GROUP BY user_account
HAVING count(user_account)=1

上面這段sql表示從兩個表中查找數據,對於返回的數據使用

GROUP BY ****
HAVING count(*****)=1

來進行篩選,表示(字段)的數量 (大於等於)數值。 符合這樣的數據返回。

注意,如果你寫 HAVING count(****)=10。 表示查找某個字段出現10次的數據,返回的整體數據仍然是一條,而不會出現一條。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM