使用联接在SQL中添加列

使用联接在SQL中添加列,sql,join,insert,Sql,Join,Insert,如果这是一个非常基本的问题,我很抱歉,我已经寻找了一个解决方案,但找不到答案。我试图复制一个表,然后基于一个公共列将三列连接到新表中 我正在处理的主表是master.alldata。我使用以下方法创建它的副本: select * into personal.alldata FROM master.alldata; alldata有一个PersonID列作为主密钥 然后我想添加另一个表thirdparty.moredata中的三列。此表有一个PersonID列和三个数据列。我使用以下方法在主表中

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

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

select * into personal.alldata FROM master.alldata;
alldata有一个PersonID列作为主密钥

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

alter table personal.alldata
ADD data1 float;
对数据2和数据3重复此操作

最后,我想将数据1、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列中保留空值。我遗漏了什么?

听起来你想更新数据,而不是插入新数据。根据RDBMS的不同,语法略有不同:

MySQL:

SQL Server:

您正在尝试更新已添加的行还是添加新行?
UPDATE personal.alldata ad
   JOIN thirdparty.moredata md ON ad.PersonID = md.PersonID
SET ad.data1 = md.data1
UPDATE ad
SET ad.data1 = md.data1
FROM personal.alldata ad 
   JOIN thirdparty.moredata md ON ad.PersonID = md.PersonID