第一種:
兩條記錄或者多條記錄的每乙個字段值完全相同,這種情況去重複最簡單,用關鍵字distinct就可以去掉。例:
1
select
distinct
*
from
table
第二種:
兩條記錄之間之後只有部分欄位的值是有重複的,但是表存在主鍵或者唯一性id。如果是這種情況的話用distinct是過濾不了的,這就要用到主鍵id的唯一性特點及group by分組。例:
1
select
*
from
table
where
id
in
(
select
max
(id)
from
table
group
by
[去除重複的欄位名列表,....])
第三種:
兩條記錄之間之後只有部分欄位的值是有重複的,但是表不存在主鍵或者唯一性id。這種情況可以使用臨時表,講資料複製到臨時表並新增乙個自增長的id,在刪除重複資料之後再刪除臨時表。例:
1
2
3
4
5
6
//建立臨時表,並將資料寫入到臨時表
select
identity(int1,1)
as
id,*
into
newtable(臨時表)
from
table
//查詢不重複的資料
select
*
from
newtable
where
id
in
(
select
max
(id)
from
newtable
group
by
[去除重複的欄位名列表,....])
//刪除臨時表
drop
table
newtable
oracle 資料庫 去重查詢
oracle 資料庫多字段去重 方法介紹 distinct 關鍵字 group by row number over partition by 列 order by 列 desc 我的需求是 根據某幾列去重 查詢出去重後的全部資訊。最後我選擇的是第三種方法。我的想法 我想找出一種更簡單的方法去 實現...
資料庫去重
資料庫資料去重方法 假設現在資料庫中有乙個人員表 user 表中包括 主鍵id,姓名name 身份證號碼id number等字段。由於程式的的原因,後來發現表中有許多理論上重複的資料 例如姓名 和身份證號相同的資料 現在要求根據身份證號碼和姓名去除表中的重複資料。select max id from...
php 資料庫去重
對於兩種去重方式 利用distinct去重 簡單易用,但只能對於單一欄位去重,並且最終的結果也僅為去重的字段,實際應用價值不是特別大。利用group去重,最終的顯示結果為所有字段,且對單一字段進行了去重操作,效果不錯,但最終顯示結果除去去重字段外,按照第乙個字段進行排序,可能還需要處理。test d...