gpt4 book ai didi

MySQL - 一次更新记录组

转载 作者:行者123 更新时间:2023-11-29 05:17:13 26 4
gpt4 key购买 nike

假设我有一个表 users,我想为 的用户将 foo 字段设置为 "bar" id in (1,5,10)"qux" 对于 id in (3,8,15) 的用户,通常我可能每个值都有更多的值和更多的 id 组。

目前(在我选择的脚本语言中)我正在遍历 foo 的值对和 id 组,就像这样(伪代码)

for(val, ids) in my_array
execute_sql("update users set foo = '#{val}' where id in (#{ids.join(',')})")
end

有没有一种方法可以在单个 sql 命令中执行此操作,而不是每对执行一个命令?

最佳答案

您可以使用 case 语句在 SQL 中执行此操作。查询看起来像:

update users u
set foo = (case when id in (1, 5, 10) then 'bar'
when id in (3, 8, 15) then 'qux'
else foo
end)
where id in (1, 5, 10) or id in (3, 8, 15);

注意:else 并不是严格需要的,只要 wherewhen 语句中的列表匹配即可。但它更安全。

此外,where 中的in 列表可以合并为一个。但是,我认为它更清楚,因为这符合 case 语句逻辑。

关于MySQL - 一次更新记录组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31159839/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com