2016-05-15 12 views
-1
id sal 
101 5000 
102 9000 

iは2列、IDおよびSal、30,000行を持つテーブルから」割り当てをされると仮定すると、は、どのようにクエリを記述、

id sal 
101 9000 
102 5000 
+0

それは意味がありません。より具体的にしてください。 – shadow

+0

ちょうど: 'update table_name set id = sal、sal = id;' – krokodilko

+0

あなたは何をする必要がありますか?2つのidの間で2つの給与を切り替えるのですか?テーブルに30,000のIDがある場合、どのテーブルに切り替えたいのですか?課題は "私はあなたに二つのIDを与えます、あなたはそれらの二つの間の給料を切り替えるといいですか?" – mathguy

答えて

1

などの更新sal列をしたい単一の列の更新値を交換しますそれはこのような何かが動作するはずです、ID = 101とid = 102" との間の給与を入れ替え:

update zz set sal = case id when 101 then (select sal from zz where id = 102) 
          when 102 then (select sal from zz where id = 101) 
          end 
where id in (101, 102); 

編集:この質問に対する彼の答えにMottorによって示されるように、ステートメントCA次のように、より簡潔に書かれています。 (私はDECODE上CASE式を使用することを好むことに注意してください - 私はそれを読んで維持する方が簡単だと思う。)

update zz x set sal = (select sal from zz where id = case x.id when 101 then 102 
                   when 102 then 101 end) 
where id in (101, 102); 
2
UPDATE emp x 
    SET sal = 
      (SELECT sal 
      FROM emp 
      WHERE id = DECODE (x.id, :id1, :id2, :id1)) 
WHERE id IN (:id1, :id2) 
関連する問題