我想知道这是否是一个有效的查询:
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
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
--...
最佳选择是多次更新。
另外一种方法如下,但不建议使用:
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语句,其中包含多个字段,但也只能有一个WHERE子句。
update table1 set field1=value1, field2=value2, field3=value3 where filed4=value5
不要这样做
。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
。