2行の2つの値を切り替えるSQL UPDATEステートメント

SQL Serverを使用して、2つの値を2つの行にスワップします。私に見せてください:

[ord] [name]
1     John
4     Jack
7     Pete
9     Steve
11    Mary

言って、このテーブルをそうするために、「ピート」と「スティーブ」の数字を入れ替える必要があります:

[ord] [name]
1     John
4     Jack
9     Pete
7     Steve
11    Mary

これは簡単な作業のようですが、SQL UPDATE文を書くことはできません。

ベストアンサー

'Peter''Steve'
がテーブル内で一意である場合、これは次のようになります:

UPDATE TableX
SET ord = ( SELECT MIN(ord) + MAX(ord) 
            FROM TableX 
            WHERE name IN ('Peter', 'Steve')
          ) - ord
WHERE name IN ('Peter', 'Steve')

または(@Erwinによって改善された)

UPDATE TableX
SET ord = ( SELECT SUM(ord) 
            FROM TableX 
            WHERE name IN ('Peter', 'Steve')
          ) - ord
WHERE name IN ('Peter', 'Steve')

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です