access處理重復記錄的方法
2024-07-21 02:09:37
供稿:網友
在一個表中有重復的記錄,重復的次數可能是一條或多條,如何在重復記錄中只留下一條,刪除其他多余的記錄,使數據集的每條記錄都是唯一的?本文運用了一種比較笨拙不過邏輯比較清楚的方法,希望大家能提供更好的方法!
1列出表中的重復記錄
(sameoda)
select [2].[地級市], count(*) as 記錄數from 2group by [2].[地級市]having count(*)>1order by [地級市];
地級市記錄數100000951094210000095111621000009511272100000951138210000095114921000009511502
2以下是除去相同記錄的過程
1)列出表中的所有重復記錄
(表2中重復記錄)
select 2.*from 2 right join sameoda on [2].[地級市]=[sameoda].[地級市];
id編號地級市保險貨物名稱數量及包裝單位聲明價值(元)運輸自運輸到74691466100000951094苯扎貝特片、水飛薊賓膠囊3箱18600天津佳木斯53511077100000951094苯扎貝特片、水飛薊賓膠囊3箱18600天津佳木斯53501076100000951116水飛薊賓膠囊5箱29000天津烏魯木齊74681465100000951116水飛薊賓膠囊5箱29000天津烏魯木齊53531079100000951127氟他胺片4箱66800天津哈爾濱74711468100000951127氟他胺片4箱66800天津哈爾濱
2)從重復記錄中找到唯一的一條記錄
minbihanhao
select 2.*from 2 left join 表2中重復記錄 on [2].[id]=[表2中重復記錄].[id]where [表2中重復記錄].[id] is null;
地級市id100000951094535110000095111653501000009511275353100000951138535410000095114953521000009511505355
3)顯示唯一記錄的全部信息
allsame1
select 2.*from 2 left join minbihanhao on ([2].[地級市]=[minbihanhao].[地級市]) and ([2].[id]=[minbihanhao].[id])where [minbihanhao].[地級市] is not nullorder by [2].[id];
4)在原表中除去所有相同的記錄
dropsame2
select 2.*from 2 left join 表2中重復記錄 on [2].[id]=[表2中重復記錄].[id]where [表2中重復記錄].[id] is null;
5)表2除去重復記錄=在原表中除去所有相同的記錄+顯示唯一記錄的全部信息
表2除去重復記錄
select *from dropsame2 union select * from allsame1;