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