-1

我有一个 sql 表,我正在尝试将另一个表中的列添加到其中。仅当我执行 alter table 查询时,它不会将值从表中拉出以匹配我尝试建立连接的列。

例如,我有表 1 中的 A 列和表 2 中的 A 列,它们应该是重合的。ColumnATable1 是标识号,ColumnATable2 是描述。

我试过这个,但有一个错误......

alter table dbo.CommittedTbl
add V_VendorName nvarchar(200)
where v_venkey = v_vendorno

它告诉我我的语法不正确......有人知道如何做到这一点吗?

4

5 回答 5

2
alter table dbo.CommittedTbl
add V_VendorName nvarchar(200);

go

update c
set c.V_VendorName = a.V_VendorName
from CommittedTbl c
join TableA a
on c.v_venkey = a.v_vendorno;

go

我只是在这里猜测你的结构。

于 2012-06-05T20:14:16.123 回答
1
alter table 2 add column A <some_type>;
update table2 set column A = (select column_A from table2 where v_venkey = v_vendorno);

您的表和列名称有点令人困惑,但我认为应该这样做。

于 2012-06-05T20:14:16.490 回答
1

ALTER TABLE 语句没有 WHERE 子句。您将需要添加列(前两行),然后根据您在两个表之间定义的关系插入行。

ALTER TABLE 语法:http: //msdn.microsoft.com/en-us/library/ms190273%28v=sql.90%29.aspx

于 2012-06-05T20:15:49.287 回答
1

SQL中有几种语言:

DDL:数据定义语言 - 这定义了架构(表、列、数据类型的结构) - 向表中添加列会影响表定义,并且所有行都将具有该新列(不仅仅是根据标准的某些行)

DML:数据操作语言 - 这会影响表中的数据,插入、更新或其他更改属于此范围,您可以根据标准更新一些数据(这就是WHERE子句的来源)

ALTER是 DDL 语句,whileINSERTUPDATE是 DML 语句。

两者不能像您那样真正混合。

您应该ALTER在您的表中添加列,然后INSERTUPDATE在该列中包含适当的数据。

于 2012-06-05T20:27:21.207 回答
0

您是否可能想要一个 JOIN 查询?如果要连接两个表或两个表的一部分,则应使用 JOIN。

如果您需要了解更多信息,请先查看此链接

希望有帮助!

于 2012-06-05T20:14:33.980 回答