這篇文章主要介紹了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只支持在mysql中mysql,子查詢必須有名字,并且列必須唯一
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