一張表中有Id,Name,Age 三個字段
1、查詢出name,age 重複的所有資料:
--查詢資料庫的重複記錄(多列)
select a.*
from [dbo].[People] a
inner join (
select a.Name,a.Age
from [dbo].[People] a
group by a.Name,a.Age
having COUNT(*)>1
)b on a.Name=b.Name and a.Age=b.Age
2、删除資料庫的重複的多餘記錄:
--删除資料庫的重複的 [多餘] 記錄
--查詢重複的記錄 放入臨時表 #ptable
select a.* into #ptable
from [dbo].[People] a
inner join (
select a.Name,a.Age
from [dbo].[People] a
group by a.Name,a.Age
having COUNT(*)>1
)b on a.Name=b.Name and a.Age=b.Age
--查詢重複裡面要保留的記錄 ,放入臨時表 #ptable2
select a.Name,a.Age,min(a.Id) otid into #ptable2
from #ptable a
group by a.Name,a.Age
--查詢重複裡面要删除的記錄,删除
delete [dbo].[People]
where Id in (
select a.Id
from #ptable a
where a.Id not in (
select a.otid
from #ptable2 a
)
)
--删除臨時表
drop table #ptable
drop table #ptable2