是否可以在1个sql update语句中更新3个sql行
我有一个这样的SQL表是否可以在1个sql update语句中更新3个sql行,sql,Sql,我有一个这样的SQL表 id Order ======== ========= 1 4 2 3 3 5 4 1 5 2 是否可以在一条sql语句中更新多行? i、 我想更新id=3,order=1和id=5,order=4和id=1,order=1 我知道如何在3个更新语句中做到这一点。但我想知道我是否可以在一条sql upda
id Order
======== =========
1 4
2 3
3 5
4 1
5 2
是否可以在一条sql语句中更新多行?
i、 我想更新id=3,order=1和id=5,order=4和id=1,order=1
我知道如何在3个更新语句中做到这一点。但我想知道我是否可以在一条sql update语句中更新3行
谢谢。如果您的DBMS支持用例,您可以使用它。尝试以下方法:
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的关系数据库的一个关键特性。甚至有这种能力。对。除非你深入兔子洞,发现这两件事不一定完全相同。请参阅事务隔离级别。