求高手帮忙。看看这个sql语句有难度··

likf521 2010-10-07 04:20:23
表名: TEST 字段: Id,A,B,C,D
其中B字段包含重复值;

Id A B C D
1 11 a 34 2010-08-18 20:01:19.810
2 22 a 35 2010-08-18 20:02:01.153
3 33 d ht 2010-08-18 20:03:53.577

D字段是时间字段,我要保留B字段重复数据中时间最前面的一条数据,其余B字段重复的都删除···
问下sql改怎么实现·
select B from TEST group by B having count(*) >1
这条是查询出来重复的字段的数据·
比如B字段中,ID为1,2的相同,我就保留 D字段的时间为2010-08-18 20:01:19.810
时间最前面的数据··也就ID为1的数据·
求大侠帮帮忙
Id A B C D
1 11 a 34 2010-08-18 20:01:19.810
3 33 d ht 2010-08-18 20:03:53.577
结果就这样·


...全文
105 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
likf521 2010-10-07
  • 打赏
  • 举报
回复
嘻嘻``OK了·谢谢楼上的各位仁兄啊··
likf521 2010-10-07
  • 打赏
  • 举报
回复
DELETE FROM member WHERE memberid not in(SELECT memberid
FROM member as TS,(SELECT mobile, MIN(certdate) certdate FROM member group by mobile having count(*) >1 ) as A
WHERE TS.mobile = A.mobile
AND TS.certdate = A.certdate)
and mobile IN (select mobile from member group by mobile having count(*) >1 )
wuyq11 2010-10-07
  • 打赏
  • 举报
回复


delete from TEST where exists(select 1 from TEST a where a.id>TEST.id and TEST.B=a.B)
gcyabc123 2010-10-07
  • 打赏
  • 举报
回复
笨办法
DELETE FROM TEST TS
WHERE NOT EXISTS (SELECT 1
FROM (SELECT B, MIN(d) D FROM TEST GROUP BY B) A
WHERE TS.B = A.B
AND TS.D = A.D)
winner2050 2010-10-07
  • 打赏
  • 举报
回复
很简单。
Delete from test where id <>(select top 1 from test order by B desc)
likf521 2010-10-07
  • 打赏
  • 举报
回复
删除重复的数据,保留时间最小的,帮小弟一个忙啊·
一切为了你 2010-10-07
  • 打赏
  • 举报
回复
select distinct B from TEST order by D asc

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧