首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以在一条sql update语句中更新3个sql行

是否可以在一条sql update语句中更新3个sql行
EN

Stack Overflow用户
提问于 2009-10-20 08:14:37
回答 4查看 917关注 0票数 4

我有一个这样的SQL表。

代码语言:javascript
运行
复制
id          Order
======== =========
1                4
2                3
3                5
4                1
5                2

可以在一条sql语句中更新多行吗?也就是说,我想更新id = 3,order = 1,id = 5,order =4,id =1,order =1

我知道如何在3个update语句中做到这一点。但是我想知道我是否可以在一条sql update语句中更新3行。

谢谢。

EN

回答 4

Stack Overflow用户

发布于 2009-10-20 00:25:47

只需一条UPDATE语句就可以做到这一点,但我不会费心。

在这种情况下,使用三个单独的更新更有意义。试图用一条语句来做这件事会使你的代码可读性降低,并且更容易出错。

但是如果你真的想要这一条语句,你可以这样做:

代码语言:javascript
运行
复制
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)
票数 5
EN

Stack Overflow用户

发布于 2009-10-20 00:26:51

为什么要在一条语句中更新三行?

如果所有行都必须彼此同步,则可以执行以下操作:

代码语言:javascript
运行
复制
BEGIN TRANSACTION;
UPDATE... ;
UPDATE... ;
UPDATE... ;
COMMIT

这样,在begin和commit之间的所有工作要么全部完成,要么都没有完成。这是基于SQL的关系数据库的一个关键特性。即使是SQLITE也有这种能力。

票数 3
EN

Stack Overflow用户

发布于 2009-10-20 00:20:56

尝试如下所示:

代码语言:javascript
运行
复制
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)

不过,这取决于您的数据库。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1591814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档