当前位置: 首页 > 知识库问答 >
问题:

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

秦信瑞
2023-03-14

我有一张像下面这样的桌子,

ID姓名电子邮件性别

这个表中已经有了一些值。

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

alter table tblPerson add Age int

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

ID姓名电子邮件性别年龄

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

所有年龄都是根据ID排序的。因此,如果需要逻辑,则不需要。我只需要添加列数据。

谢谢

共有1个答案

越雨泽
2023-03-14

将值存储在带有id的临时表中。然后使用连接

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

您也可以使用一个巨大的大小写表达式来实现这一点,但这很容易出错:

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, . . .);

 类似资料:
  • 问题内容: 我看到这对笨论坛 考虑以下代码 这显然是您在Codeigniter中这样做的方式 实际上这是行不通的。我看了一下生成的SQL,结果甚至没有提到联接。 有谁知道如何使用Codeigniter的Active Record数据库类对联接进行更新? 问题答案: 我发现的一种解决方案是完全删除联接并将联接条件移到“ where”函数中,此外,您还需要更改更新字符串以包括新表。

  • 问题内容: 我有2张桌子,如下所示: serial_table serial_key CHARACTER VARYING(20), PRIMARY KEY(id, serial_key) serial_rate: serial_key CHARACTER VARYING(20), rate NUMERIC, PRIMARY KEY(id, serial_key), FOREIGN KEY (id,

  • 问题内容: 使用上面的代码,数据库kuis中表Writers的第三行值将用new_value更新,并且输出将为 Number od rows更新:1 我应该如何同时更新多行? 问题答案: 可能您正在寻找cursor.executemany。

  • 问题内容: 使用上面的代码,数据库kuis中表Writers的第三行值将使用new_value更新,并且输出将为 Number od rows更新:1 我应该如何同时更新多行? 问题答案: 可能您正在寻找cursor.executemany。

  • 问题内容: 我想轻松删除多个表,而无需在删除查询中实际列出表名,并且要删除的表的前缀为“ wp_” 问题答案: 只需分享其中一种解决方案: mysql> SELECT CONCAT(“ DROP TABLE”, GROUP_CONCAT(TABLE_NAME))as stmt 从information_schema.TABLES WHERE TABLE_SCHEMA =“ your_db_name

  • 问题内容: 我处于必须更新数据库中约12,000个项目的情况。每行都需要镜像我之前制作的一个excel文件。我已经创建了创建SQL语句每一行的文件,但是不确定是否可以在单个查询中运行每一行。 这是我正在尝试做的一个例子。 这项工作有效吗,或者我要实现的目标还有更好的选择吗? 每个项目将具有唯一值,并且要更改的列也将具有唯一值。我看不到如何通过循环或到目前为止找到的任何其他方法来实现此目的。我意识到