我想知道这是否是一个有效的查询:
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
答案 0 :(得分:44)
NO!
您需要单独处理
Update [table]
Set ID = 111111259
WHERE ID = 2555
Update [table]
Set ID = 111111261
WHERE ID = 2724
--...
答案 1 :(得分:42)
最佳选择是多次更新。
或者您可以执行以下操作,但建议不:
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)
答案 2 :(得分:13)
没有。这不是一个有效的查询。 您只能有一个具有多个字段的SET语句,但是,还有一个WHERE子句
update table1 set field1=value1, field2=value2, field3=value3 where filed4=value5
答案 3 :(得分:4)
不是,您就是这样做的:
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
答案 4 :(得分:3)
不,您需要为每次更新创建单独的查询。
答案 5 :(得分:2)
没有。您必须单独更新:
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
答案 6 :(得分:2)
既然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
答案 7 :(得分:2)
您也可以像这样使用案例:
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
答案 8 :(得分:0)
不,你需要单独处理每个陈述..
UPDATE table1
Statement1;
UPDATE table 1
Statement2;
等等
答案 9 :(得分:0)
您可以这样做
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
答案 10 :(得分:-1)
使用查询终止符字符串并在SQL客户端应用程序的选项中设置它。我使用GO作为查询终止符。
您的SQL看起来像这样;
UPDATE table SET ID = 111111259 WHERE ID = 2555 GO
UPDATE table SET ID = 111111261 WHERE ID = 2724 GO
UPDATE table SET ID = 111111263 WHERE ID = 2021 GO
UPDATE table SET ID = 111111264 WHERE ID = 2017 GO
这将允许您执行Ctrl + A并一次运行所有行。
字符串终止符告诉SQL客户端更新语句已完成并转到下一行并处理下一个语句。
希望有所帮助