首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用不同的值更新多行

问用不同的值更新多行
EN

Stack Overflow用户
提问于 2010-10-07 14:00:39
回答 3查看 10.8K关注 0票数 8

我在我的MySQL数据库“用户”中找到了这个表。它有字段'id‘和'value’。

现在,我想用一个SQL查询更新这个表中的许多行,但是许多行应该得到不同的值。目前,我使用的是:

代码语言:javascript
复制
UPDATE users
    SET value = CASE id
        WHEN 1 THEN 53
        WHEN 2 THEN 65
        WHEN 3 THEN 47
        WHEN 4 THEN 53
        WHEN 5 THEN 47
    END
WHERE id IN (1,2,3,4,5)

这个很管用。但是我觉得我可以做一些优化,因为我给行分配的值只有3到4个不同。正如你所看到的,现在这些是47,53和65。是否有一种方法可以在同一查询中同时更新所有获得相同值的行?或者,还有别的方法可以优化这个吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-07 14:19:38

与其做case variable when value then ...,不如尝试做case when condition then ... --如下所示:

代码语言:javascript
复制
UPDATE users
    SET value = CASE 
        WHEN id in (1,4) THEN 53
        WHEN id = 2 THEN 65
        WHEN id in (3,5) THEN 47
    END
WHERE id IN (1,2,3,4,5)
票数 16
EN

Stack Overflow用户

发布于 2016-01-13 14:01:35

假设id是唯一的或者主要的..。

代码语言:javascript
复制
insert into users 
  (id,value) 
VALUES 
  (1,53),(2,65),(3,47),(4,53),(5,47)
on duplicate key update
value=VALUES(value)
票数 12
EN

Stack Overflow用户

发布于 2010-10-07 14:07:32

我只想用几个不同的更新语句来做这件事。

代码语言:javascript
复制
UPDATE users
    SET value = 53
WHERE id = 1;


UPDATE users
    SET value = 65
WHERE id = 2;

...

如果您只需要在多个行上设置5或6个值,这似乎是最简单的。还是有什么特定的原因需要在一个查询中这样做呢?

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

https://stackoverflow.com/questions/3882388

复制
相关文章

相似问题

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