MySQL批量更新不同值的语句

发布于 2024-12-17 09:54:49 字数 244 浏览 2 评论 0原文

是否有与这些等效的单个 SQL 语句?

UPDATE table_name SET (a = 'something', b='B1') WHERE id=1;
UPDATE table_name SET (a = 'something else', b='B2') WHERE id=2;
UPDATE table_name SET (a = 'another', b='B3') WHERE id=3;

Is there any single SQL statement equivalent to these?

UPDATE table_name SET (a = 'something', b='B1') WHERE id=1;
UPDATE table_name SET (a = 'something else', b='B2') WHERE id=2;
UPDATE table_name SET (a = 'another', b='B3') WHERE id=3;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

嘿咻 2024-12-24 09:54:49

是的,这个:

UPDATE table_name
   SET a = CASE WHEN id = 1
                THEN 'something'
                WHEN id = 2
                THEN 'something else'
                WHEN id = 3
                THEN 'another'
           END
 WHERE id IN (1,2,3)
;

但我不确定这是否是你想要的?

Yes, this:

UPDATE table_name
   SET a = CASE WHEN id = 1
                THEN 'something'
                WHEN id = 2
                THEN 'something else'
                WHEN id = 3
                THEN 'another'
           END
 WHERE id IN (1,2,3)
;

but I'm not sure if it's what you have in mind?

贪恋 2024-12-24 09:54:49

如果要插入更大的数据数组,那么您可以使用 ON DUPLICATE KEY UPDATE 构造。它在 MySQL 中的工作效率会更高。

有关类似问题的使用示例,请参阅我的回答

If you have bigger array of data to be inserted, then you may use ON DUPLICATE KEY UPDATE construction. It will work more efficient in MySQL.

See my answer here for the similar question, for the example of usage.

分开我的手 2024-12-24 09:54:49

您可以使用具有常量值的选择行,然后将其与表连接。

UPDATE table_name T INNER JOIN (select 1 as id,'something' as a,'B1' as b
union all select 2,'something','B2'
union all select 3,'another','B2') V on T.id = V.id set T.a = V.a, T.b = V.b;

请参阅如何选择填充常量的多行?

You can use select rows with your constant value, then join it with you table.

UPDATE table_name T INNER JOIN (select 1 as id,'something' as a,'B1' as b
union all select 2,'something','B2'
union all select 3,'another','B2') V on T.id = V.id set T.a = V.a, T.b = V.b;

Refer to How to select multiple rows filled with constants?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文