SQL 部分欄位去重查詢

2021-09-22 22:50:07 字數 3006 閱讀 7266

在要刪除的有重複資料中存在幾種情況:

1.存在兩條完全相同的紀錄

這是最簡單的一種情況,用關鍵字distinct就可以去掉。

example: select distinct * from table(表名) where (條件)

2.存在部分字段相同的紀錄(有主鍵id即唯一鍵)

如果是這種情況的話用distinct是過濾不了的,這就要用到主鍵id的唯一性特點及group by分組

example:

select * from table where id in (select max(id) from table group by [去除重複的欄位名列表,…])

3.沒有唯一鍵id

example:

select identity(int1,1) as id,* into newtable(臨時表) from table

select * from newtable where id in (select max(id) from newtable group by [去除重複的欄位名列表,…])

該專案為乙個關於銀行貸款的專案,借款人在使用者端介面填寫相關借款資訊並提交,銀行工作人員通過銀行端介面查詢到借款人相關資訊,通過後台操作更改貸款人借款狀態,借款人可在使用者端查詢每筆貸款的貸款狀態等資訊。我所遇到的問題就是借款狀態所關聯的借款表loan(借款人所檢視的借款資訊列表)和借款狀態表loanprogress(查詢每筆借款所處借款狀態)的列表查詢問題。下面將專案從簡處理以備日後重溫檢視。

專案中所涉及到的列表:

loan 借款表

id借款人/企業id

借款人型別

借款金額

建立人id

建立時間

修改人id

修改時間

101202

0100

9012019-01-03

8072019-01-17

102303

1200

9012019-01-09

8032019-01-11

103301

1500

9022019-01-13

8012019-02-03

104201010

9012019-01-10

8092019-01-29

105302120

9082019-01-20

8012019-02-03

borrower 借款人表

id借款人名稱

201柯西

202泰勒

borrowingenterprise 借款企業表

id借款企業名稱

301蘭尼斯特公司

302史達克公司

303克里斯安公司

loanprogress 借款進度表

id借款人/企業id

借款人型別

借款表id

借款進度

401302

1105

審核中402

2010

104審核完成

403202

0101

放款中404

3031

102審核完成

405201

0104

放款中406

3011

103審核中

407202

0101

審核完成

408302

1105

審核中409

2010

104審核完成

410303

1102

審核完成

411301

1103

還款中412

3031

102審核中

413201

0104

還款中414

2020

101審核完成

415301

1103

審核完成

416202

0101

審核中417

3031

102放款中

418301

1103

審核完成

執行sql語句:

select 

t.id,

t.借款人/企業id

t.借款人型別

t.借款金額

t.建立人id,

t.建立時間,

t.修改人id,

t.修改時間,

,( select 借款進度

from loanprogress

where id in (select max(id) from loanprogress where 借款表id is not null and 借款表id!='' and 借款表id=t.id group by 借款表id ) )借款進度

,(select 借款人名稱 from borrower where id = t. 借款人/企業id) 借款人名稱

,(select 借款企業名稱 from borrowingnterprise where id = t.借款人/企業id) 借款企業名稱

from loan t

where t.建立人='901'

查詢結果如下:

id借款人/企業id

借款人型別

借款金額

建立人id

建立時間

修改人id

修改時間

借款進度

借款人名稱

借款企業名稱

101202

0100

9012019-01-03

8072019-01-17

審核中泰勒

102303

1200

9012019-01-09

8032019-01-11

放款中克里斯安公司

104201010

9012019-01-10

8092019-01-29

還款中柯西

sql去重 查詢

有重複資料主要有一下2種情況 1.存在兩條完全相同的紀錄 這是最簡單的一種情況,用關鍵字distinct就可以去掉 例子 select distinct from table 表名 where 條件 2.存在部分字段相同的紀錄 有主鍵id即唯一鍵 如果是這種情況的話用distinct是過濾不了的,這...

sql去重查詢

背景 專案有訊息推送,根據訊息推送記錄,篩選出一共有哪幾種訊息型別,並且標題和文字是什麼 表部分結構如圖 主要是根據subject來去重所有資料,難點是,使用distinct的話,無法顯示title和content欄位 select distinct subject from messages如果使...

oracle 多字段去重查詢

需要對錶base mri device的compname fieldstr version欄位分別進行去重查詢,如何使用乙個sql搞定?注意 是分別對3個字段進行去重,而不是3個字段聯合去重。首先,必須進行三次查詢,而將查詢結果進行 行合併 需要用到union或union all 其次,為了區分查詢...