我有一个像这样的SQL表。是否有可能在1个sql更新语句中更新3个sql行
id Order
======== =========
1 4
2 3
3 5
4 1
5 2
是否有可能在1个sql语句中更新多行?我想要更新id = 3,order = 1和id = 5,order = 4和id = 1,order = 1
我知道如何在3个更新语句中做到这一点。但我想知道是否可以在1个sql更新语句中更新3行。
谢谢。
我有一个像这样的SQL表。是否有可能在1个sql更新语句中更新3个sql行
id Order
======== =========
1 4
2 3
3 5
4 1
5 2
是否有可能在1个sql语句中更新多行?我想要更新id = 3,order = 1和id = 5,order = 4和id = 1,order = 1
我知道如何在3个更新语句中做到这一点。但我想知道是否可以在1个sql更新语句中更新3行。
谢谢。
如果您的DBMS支持,您可以使用CASE。
尝试这样:
update Orders
set
Order = (
case
when id = 3 then 1
when id = 5 then 4
when id = 1 then 1
end
where id in (3, 5, 1)
数据库上取决于虽然。
你可以用一个UPDATE
声明来做到这一点,但我不会打扰。
在这种情况下使用三个单独更新更有意义。试图用一个语句来做这件事会让你的代码变得更不可读,更容易出错。
但如果你真的想要一个说法,在这里你去:
UPDATE your_table
SET order = CASE id
WHEN 3 THEN 1
WHEN 5 THEN 4
WHEN 1 THEN 1
END
WHERE id IN (3, 5, 1)
你为什么要在一个语句更新三行?
如果行都必须彼此同步,你可以这样做:
BEGIN TRANSACTION;
UPDATE... ;
UPDATE... ;
UPDATE... ;
COMMIT
这样一来,之间的所有工作的开始和提交,要么全部完成要么都不做。这是基于SQL的关系数据库的一个关键特性。即使SQLITE也有此功能。
对。除非你深入兔子洞,发现这两件事情不一定相同。请参阅事务隔离级别。 – 2009-10-20 00:51:40