mysql - 如何使用单个查询更新表中多个列的值?

标签 mysql sql

我有一个类似于下面的表格,

ID 姓名 电子邮件 性别

并且该表中已有值。

现在,我使用下面的查询来添加年龄。

更改表 tblPerson 添加年龄 int

现在,我的行结构看起来像

ID 姓名 电子邮件 性别 年龄

现在,我有年龄列表。是否有任何查询要将这些年龄添加到新创建的列中?

所有年龄按照ID排序。因此不需要 IF 逻辑。我只需要添加列数据。

谢谢。

最佳答案

将值与 id 一起存储在临时表中。然后使用 join:

update t join
       idages ia
       on t.id = io.id
    set t.age = ia.age;

您还可以使用巨大的 case 表达式来执行此操作,但这很容易出错:

update t
    set t.age = (case when id = id1 then age1
                      when id = id2 then age2
                      when id = id3 then age3
                      . . .
                 end)
    where t.age in (id1, id2, id3, . . .);

关于mysql - 如何使用单个查询更新表中多个列的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43881507/

相关文章:

c# - ASP.NET 中的 MySQL 异常

sql - 需要搜索 contains 的棘手 SQL 查询

mysql - 我的表在性能方面的最佳结构 :

mysql - 为什么sql查询不按时间戳顺序输出左连接数据?

MySQL left join with max id

MYSQL数据库查询返回最高分

mysql - 文本字段的查询优化

sql - 恢复的三个阶段 : the analysis phase, 重做阶段,最后是撤消阶段

sql - 如何使用 RANK 对匹配记录进行分组

php - 当使用 SQL 数据库中的单元格数据填充时,从文本区域中删除选项卡