34,592
社区成员
发帖
与我相关
我的任务
分享
1.select distinct * from tb
2.select * from tb group by a0188,k0700,k0701,k0702 having count(*)>=2
--找出重复的记录
select c1,c2,c3,c4
from tb
group by c1,c2,c3,c4
having count(1) > 1
--删除重复记录
select distinct * into #tb
from tb
delete from tb
insert into tb select * from #tb
drop table #tb
create table #K07
(a0188 int, k0700 datetime, k0701 nvarchar(10), k0702 int) --关联字段 日期 时间 机号
insert #K07
select 102,'2011-05-07','08:00', 2 union all
select 102,'2011-05-07','08:00', 2 union all
select 102,'2011-05-07','08:01', 2 union all
select 103,'2011-05-07','12:01', 3 union all
select 103,'2011-05-07','12:01', 3
--求重複
select * from #K07 group by a0188,k0700,k0701,k0702 having count(1)>1
select a0188, k0700, k0701, k0702
from tabname
group by a0188, k0700, k0701, k0702
having count(1)>1
select distinct a0188,k0700,k0701,k0702
from k07
create table #K07
(a0188 int, k0700 datetime, k0701 nvarchar(10), k0702 int) --关联字段 日期 时间 机号
insert #K07
select 102,'2011-05-07','08:00', 2 union all
select 102,'2011-05-07','08:00', 2 union all
select 102,'2011-05-07','08:01', 2 union all
select 103,'2011-05-07','12:01', 3 union all
select 103,'2011-05-07','12:01', 3
--樓主是要SELETE 還是DELETE ?
--SELETE
select distinct a0188 , k0700 , k0701 , k0702 from #K07
--a0188 k0700 k0701 k0702
------------- ----------------------- ---------- -----------
--102 2011-05-07 00:00:00.000 08:00 2
--102 2011-05-07 00:00:00.000 08:01 2
--103 2011-05-07 00:00:00.000 12:01 3
--
--(3 row(s) affected)
--DELETE
;with T as(select Row_number()over(partition by a0188 , k0700 , k0701 , k0702 order by getdate()) as num,
a0188 , k0700 , k0701 , k0702 from #K07)
delete T where num<>1
select * from #K07
--a0188 k0700 k0701 k0702
------------- ----------------------- ---------- -----------
--102 2011-05-07 00:00:00.000 08:00 2
--102 2011-05-07 00:00:00.000 08:01 2
--103 2011-05-07 00:00:00.000 12:01 3
--
--(3 row(s) affected)
select distinct a0188,k0700,k0701,k0702
from tb