MySQL怎么去除重復數據?

這篇文章主要介紹了mysql 去除重復數據實例詳解的相關資料,需要的朋友可以參考下

mysql 去除重復數據實例詳解

有兩個意義上的重復記錄,一是完全重復的記錄,也即所有字段均都重復,二是部分字段重復的記錄。對于第一種重復,比較容易解決,只需在mysql語句中使用distinct關鍵字去重,幾乎所有數據庫系統都支持distinct操作。發生這種重復的原因主要是表設計不周,通過給表增加主鍵或唯一mysql列即可避免。

select?distinct?*?from?t;

對于第二類重復問題,通常要求查詢出重復記錄中的任一條記錄。假設表t有id,name,address三個字段,id是主鍵,有重復的字段為name,address,要求得到這兩個字段唯一的結果集。

— Oracle、MySQL,使用相關子查詢

select?*?from?t?t1    ?where?t1.id?=    ?(select?min(t2.id)    ??from?t?t2    ??where?t1.name?=?t2.name?and?t1.address?=?t2.address);

?— Hive只支持在mysqlmysql,子查詢必須有名字,并且列必須唯一

select?t1.*    ?from?t?t1,    ???(select?name,?address,?min(id)?id?from?t?group?by?name,?address)?t2    ?where?t1.id?=?t2.id;

— 還可以使用hive的row_number()分析mysql

select?t.id,?t.name,?t.address    ?from?(select?id,?name,?address,    row_number()?over?(distribute?by?name,?address?sort?by?id)?as?rn?    ?????from?t)?t?    ?where?t.rn=1;

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享