【问题标题】:Adding a column in SQL using a JOIN使用 JOIN 在 SQL 中添加列
【发布时间】:2025-11-29 07:35:01
【问题描述】:

很抱歉,如果这是一个非常基本的问题,我已经搜索了解决方案但找不到答案。我正在尝试复制一个表,然后根据一个公共列将三列连接到新表中。

我正在处理的主表是 master.alldata。我使用以下方法创建它的副本:

select * into personal.alldata FROM master.alldata;

alldata 有一个 PersonID 列,用作主密钥。

然后我想从另一个表thirdparty.moredata 添加三列。此表有一个 PersonID 列和三个数据列。我使用以下方法在主表中创建空间:

alter table personal.alldata
ADD data1 float;

(对 data2 和 data3 重复此操作)

最后我想将 data1、2 和 3 添加到主表中,匹配两个表中的 PersonID。我试过用这个:

INSERT into personal.alldata (data1, data2, data3)
SELECT moredata.data1, mordata.data2, moredata.data3
FROM thirdparty.moredata
INNER JOIN personal.alldata
ON alldata.PersonID = moredata.personid;

结果仍然在 data1、data2 和 data3 列中留下空值。我错过了什么?

【问题讨论】:

  • 您是要UPDATE 添加的行还是添加新行?

标签: sql join insert


【解决方案1】:

听起来您想要UPDATE 您的数据,而不是INSERT 新数据。根据 RDBMS,语法略有不同:

MySQL:

UPDATE personal.alldata ad
   JOIN thirdparty.moredata md ON ad.PersonID = md.PersonID
SET ad.data1 = md.data1

SQL 服务器:

UPDATE ad
SET ad.data1 = md.data1
FROM personal.alldata ad 
   JOIN thirdparty.moredata md ON ad.PersonID = md.PersonID

【讨论】: