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

时间:2017-05-09 23:50:35

标签: mysql sql

我有一张类似下面的表格,

ID名称电子邮件性别

此表中已有值。

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

alter table tblPerson添加Age int

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

ID姓名电子邮件性别年龄

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

所有年龄都根据身份证排序。因此不需要IF逻辑。我只需要添加列数据。

感谢。

1 个答案:

答案 0 :(得分:0)

将值存储在具有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, . . .);