是否可以在1个sql update语句中更新3个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

我有一个这样的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 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的关系数据库的一个关键特性。甚至有这种能力。

对。除非你深入兔子洞,发现这两件事不一定完全相同。请参阅事务隔离级别。