資料庫資料去重方法

2021-06-26 06:28:00 字數 1212 閱讀 3883

1.   2個結果進行union 時,也可以去重

2. group by 也可以去重

====below is a reprint of others====

假設現在資料庫中有乙個人員表(user),表中包括 主鍵id,,姓名、身份證號碼、等字段。由於程式的的原因、好來發現表中有許多理論上重複的資料(即姓名、和身份證號相同的資料),現在要求根據身份證號碼和姓名去除表中的重複資料。

select max(id) as id,姓名,身份證號 from user group by 姓名,身份證號;

通過上面的這條sql語句即可得到乙份沒有重複姓名和身份證號的一組資料,當然只等得到id、姓名、和身份證號,其實我們真正想要的只有id一列而已。因為我們只要得到沒有重複資料的id就可以找出所有的並且不重複的資料了。

接下類我們使用巢狀的查詢 得到所有的不重複資料的id

select id  from (select max(id) as id,姓名,身份證號 from user group by 姓名,身份證號) as t

得到我們需要的id之後我們可以有好幾種選擇:1、使用  not in 刪除所有id不在以上查出的id範圍的資料。即刪除重複的資料

delete form user where  id not in (select id from (select max(id) as id,姓名,身份證號 from user group by 姓名,身份證號) as t );

使用not in 非常耗費資料庫資源,並且 如果資料量大的話,會非常的慢,可能會慢的難以忍受,因此不建議使用。

除了可以使用 not in 之外還可以使用臨時表的方法:

1、找出所有不重複的資料

select * into #temp1  from user where id in (select id from (select max(id) as id,姓名,身份證號 from user group by 姓名,身份證號) as t );

2,刪除原表中的所有資料

delete from user;

3、將臨時表中的資料在插入會user表

insert into user  select * from #temp1;

4,刪除臨時表

drop #temp1;

現在總結一下我的思路

這裡的關鍵是根據需要判斷是否重複的字段分組後、使用聚合函式max 或者min得到唯一的id,這一點十分重要、

資料庫去重

資料庫資料去重方法 假設現在資料庫中有乙個人員表 user 表中包括 主鍵id,姓名name 身份證號碼id number等字段。由於程式的的原因,後來發現表中有許多理論上重複的資料 例如姓名 和身份證號相同的資料 現在要求根據身份證號碼和姓名去除表中的重複資料。select max id from...

php 資料庫去重

對於兩種去重方式 利用distinct去重 簡單易用,但只能對於單一欄位去重,並且最終的結果也僅為去重的字段,實際應用價值不是特別大。利用group去重,最終的顯示結果為所有字段,且對單一字段進行了去重操作,效果不錯,但最終顯示結果除去去重字段外,按照第乙個字段進行排序,可能還需要處理。test d...

一千萬條資料去重 資料庫資料去重方法

資料庫資料去重方法 在大量資料庫資料處理的時候,發現很多重複項,這些重複項給工作帶來很多不便,那麼,怎麼才能更快的去重呢,有沒有好的資料庫資料去重方法呢,下面給大家推薦幾種資料庫資料去重方法,簡單的了解下吧。假設現在資料庫中有乙個人員表 user 表中包括 主鍵id,姓名 身份證號碼 等字段。由於程...