我有一张包含以下数据的表格:
Id Name Value
1 John 100
2 John -500
3 John 500
4 Smith 10
5 Smith 20
6 Smith -20
7 Stuart -10
8 Wills 25
我正在寻找一个有效的TSQL查询,可以删除John -500和Smith -20(即如果它们在同一组[名称组]中具有相似的正值,则为负值的记录)。
答案 0 :(得分:1)
我认为这就是你所需要的。 (SQL DEMO)
delete y
from mytable y join (
select id,name, value
from mytable x
where value > 0) z on y.name = z.name and y.value = -1 * z.value
select * from mytable
--SELECT RESULTS AFTER DELETING
ID NAME VALUE
1 John 100
3 John 500
4 Smith 10
5 Smith 20
7 Stuart -10
8 Wills 25
答案 1 :(得分:0)
delete a
from mytable a
join mytable b
on b.name = a.name
and a.value < 0
and b.value = -1 * z.value
与Kaf +1几乎相同