导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

怎样一次性删除所有成对的相反数?

wuaza 2006-01-19 11:38:43
表1如下:
id t1 t2
1 a 3
2 b 12
3 a -3
4 a 3
5 a 33
6 b 12
7 b 11
8 c 9
9 c -9
我想把所有的负数及与每个负数相反的一个正数删除,达到以下效果:
id t1 t2
2 b 12
4 a 3
5 a 33
6 b 12
7 b 11
请问用SQL怎么解决?
...全文
55 点赞 收藏 3
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
-狙击手- 2006-01-19
回复
wuaza 2006-01-19
子陌兄出手果然厉害,请问你的QQ是多少,非常希望结交你这样的一流高手
回复
子陌红尘 2006-01-19
declare @t table(id int,t1 char(1),t2 int)
insert into @t select 1,'a',3
insert into @t select 2,'b',12
insert into @t select 3,'a',-3
insert into @t select 4,'a',3
insert into @t select 5,'a',33
insert into @t select 6,'b',12
insert into @t select 7,'b',11
insert into @t select 8,'c', 9
insert into @t select 9,'c',-9

delete a from @t a
where
(select count(*) from @t where id<=a.id and t1=a.t1 and t2=a.t2)<=
(select count(*) from @t where t1=a.t1 and t2=-a.t2)

select * from @t

/*
id t1 t2
---- ---- ----
2 b 12
4 a 3
5 a 33
6 b 12
7 b 11
*/
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告