-2

次のデータを含むテーブルがあります。

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

John-500とSmith-20を削除できる効率的なTSQLクエリを探しています(つまり、同じグループ[名前でグループ化]に同様の正の値がある場合は負の値のレコード)。

4

2 に答える 2

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
于 2013-01-24T17:55:20.653 に答える
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とほぼ同じ

于 2013-01-24T18:57:55.567 に答える