在要刪除的有重複資料中存在幾種情況:該專案為乙個關於銀行貸款的專案,借款人在使用者端介面填寫相關借款資訊並提交,銀行工作人員通過銀行端介面查詢到借款人相關資訊,通過後台操作更改貸款人借款狀態,借款人可在使用者端查詢每筆貸款的貸款狀態等資訊。我所遇到的問題就是借款狀態所關聯的借款表loan(借款人所檢視的借款資訊列表)和借款狀態表loanprogress(查詢每筆借款所處借款狀態)的列表查詢問題。下面將專案從簡處理以備日後重溫檢視。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 借款表
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 其次,為了區分查詢...