これが有効なクエリかどうか疑問に思っています:
UPDATE table
SET ID = 111111259
WHERE ID = 2555
AND SET ID = 111111261
WHERE ID = 2724
AND SET ID = 111111263
WHERE ID = 2021
AND SET ID = 111111264
WHERE ID = 2017
いや!
これらを個別に処理する必要があります
Update [table]
Set ID = 111111259
WHERE ID = 2555
Update [table]
Set ID = 111111261
WHERE ID = 2724
--...
最適なオプションは複数の更新です。
または、次の操作を実行できますが、[〜#〜] not [〜#〜]を推奨します:
UPDATE table
SET ID = CASE WHEN ID = 2555 THEN 111111259
WHEN ID = 2724 THEN 111111261
WHEN ID = 2021 THEN 111111263
WHEN ID = 2017 THEN 111111264
END
WHERE ID IN (2555,2724,2021,2017)
いいえ。これは有効なクエリではありません。複数のフィールドを持つSETステートメントは1つしか持てませんが、WHERE句も1つだけ持つことができます
update table1 set field1=value1, field2=value2, field3=value3 where filed4=value5
Nope、これがあなたのやり方です:
UPDATE table SET ID = 111111259 WHERE ID = 2555
UPDATE table SET ID = 111111261 WHERE ID = 2724
UPDATE table SET ID = 111111263 WHERE ID = 2021
UPDATE table SET ID = 111111264 WHERE ID = 2017
いいえ、更新ごとに個別のクエリを作成する必要があります。
次のようにケースを使用することもできます:
UPDATE table
SET ID = case
when ID = 2555 then 111111259
when ID = 2724 then 111111261
when ID = 2021 then 111111263
when ID = 2017 then 111111264
else ID
end
いいえ。個別の更新を行う必要があります。
UPDATE table
SET ID = 111111259
WHERE ID = 2555
UPDATE table
SET ID = 111111261
WHERE ID = 2724
UPDATE table
SET ID = 111111263
WHERE ID = 2021
UPDATE table
SET ID = 111111264
WHERE ID = 2017
あなたがそれをしたいすべての行をSQLするので、私はあなたがこのようなコードであると思います
あなたの内部でSQL管理もクエリを実行し、これは動作するはずです。
UPDATE table
SET ID = 111111259 WHERE ID = 2555
UPDATE table
SET ID = 111111261 WHERE ID = 2724
UPDATE table
SET ID = 111111263 WHERE ID = 2021
UPDATE table
SET ID = 111111264 WHERE ID = 2017
いいえ、すべてのステートメントを個別に処理する必要があります。
UPDATE table1
Statement1;
UPDATE table 1
Statement2;
等々
あなたはこれを行うことができます
WITH V(A,B) AS (VALUES
(2555,111111259)
,(2724,111111261)
,(2021,111111263)
,(2017,111111264)
)
SELECT COUNT(*) FROM NEW TABLE (
UPDATE table
SET id = (SELECT B FROM V WHERE ID = A)
WHERE EXISTS (SELECT B FROM V WHERE ID = A)
)
列編成のテーブルでは機能しません。その場合はMERGE
を使用します