Sql 使用联接中的数据添加新列

Sql 使用联接中的数据添加新列,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,使用联接中的值向现有表中添加列的最佳方法是什么…例如: 如果我将表A连接到表B Select A.Column1, A.Column2, B.Column1, B.Column2, B.Column3 FROM A INNER JOIN B ON A.Column1 = B.Column2 基本上,我只想将表B中存在的列复制到表A中,如何将新的A.Column3添加到表A中,以基于联接匹配B.Column3?首先使用命令添加新列 后记使用update命令将B的值放入在A中创建的列中。请注意,这

使用联接中的值向现有表中添加列的最佳方法是什么…例如:

如果我将表A连接到表B

Select
A.Column1,
A.Column2,
B.Column1,
B.Column2,
B.Column3
FROM A
INNER JOIN B
ON A.Column1 = B.Column2
基本上,我只想将表B中存在的列复制到表A中,如何将新的A.Column3添加到表A中,以基于联接匹配B.Column3?

首先使用命令添加新列


后记使用update命令将B的值放入在A中创建的列中。

请注意,这可能不是最有效的方法

alter table A add column3 [yourdatatype];

update A set column3 = (select column3 from B where A.Column1 = B.Column2) 
  where exists (select column3 from B where A.Column1 = B.Column2)

可以使用INSERT语句创建新表:

INSERT INTO
   NEW_A
SELECT
   A.*,
   B.Column3
FROM A
   INNER JOIN B
   ON A.Column1 = B.Column2
试试这个:

alter table A add column3 datatype

update A 
set column3 = B.column3 
from A inner join B on A.Column1 = B.Column2
您可以这样做:

alter A add column3 datatype;

update A
inner join (select column2 ,column3, count(*) as cnt from B group by column2) b
on A.column1 = b.column2 set 
A.column3 = b.column3;

他想添加到现有的表中。在Postgres上使用来自内部联接B的
要比使用来自B的简单
慢得多,其中A.Column1=B.Column2
子句。(我不确定前者是否有效;我从未完成过。)在SQLite中,我使用此方法获取b表的最后一行作为所有行的值。