如何将 SELECT 的结果添加为现有表中的新列?

Posted

技术标签:

【中文标题】如何将 SELECT 的结果添加为现有表中的新列?【英文标题】:How do I add the result of a SELECT as a new column in an existing table? 【发布时间】:2017-01-31 20:44:14 【问题描述】:

在 SQL(无论您喜欢哪种变体,例如 mysql 或 MonetDB)中,它都非常直观且易于操作:

CREATE TABLE t2 AS SELECT c1 FROM t1;

并将选择结果作为新表中的新列获取。但是,如果您希望将结果作为 same 表(表t1)中的新列怎么办?假设c1 的类型为INT,并且可能为空。我们需要写:

ALTER TABLE t1 ADD c2 INT;
UPDATE TABLE t1 SET c2 = c1;

这是一个简单的版本,因为如果它是一个非空列,我们需要用一些值初始化新列;如果数据来自多个表,我需要在UPDATE 中进行某种内部查询(如果可能的话)。

我可以以某种方式使用单个命令选择列吗?

【问题讨论】:

【参考方案1】:

你使用join:

UPDATE t1 JOIN
       t2
        ON t2.? = t1.?
   SET t1.c2 = t2.c1;

? 是用于标识t2 中的哪一行应该更新t1 中的哪一行的列的占位符。

【讨论】:

但我没有t2。我只有t1。我想避免创建t2

以上是关于如何将 SELECT 的结果添加为现有表中的新列?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL:如何根据从另一个表中选择的值填充现有表的新列[关闭]

如何将具有值的新列添加到现有数据表?

将 GroupBy 平均结果添加为 pandas 中的新列

如何使用微软互操作将工作表开头的新列添加到现有 excel

解决如何在现有表中添加列

在 IMPALA/HIVE 中添加带有 SELECT 的新列后,旧表数据变为 NULL