2012-06-05 32 views
-1

我有一個SQL表,我試圖從另一個表添加列。只有當我執行alter table查詢時,它纔不會將表中的值拉出來以匹配我嘗試建立連接的列。Sql列沒有值

例如我從表1列A和表2列A,他們應該重合。 ColumnATable1是一個標識號,ColumnATable2是描述。

我試過,但得到了一個錯誤......

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

它告訴我,我有不正確的語法......任何人都知道如何做到這一點?

+1

在兩個陳述中做到這一點。從alter table語句中除去where子句,並查看如何使用'update'將數據從一個表移動到另一個表。 –

+2

如果您要爲我們提供您現有的結構,您會得到更多有用的答案。 – swasheck

+3

爲什麼要複製nvarchar(200)值並將其存儲在兩個表中?這對於冗餘存儲是浪費的,因爲它是一個可能會改變的名稱,這意味着您將不得不在多個地方進行更新。通常使用代理鍵來進行這種連接。 –

回答

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 

我只是猜測你的結構在這裏。

1
alter table 2 add column A <some_type>; 
update table2 set column A = (select column_A from table2 where v_venkey = v_vendorno); 

表和列的名稱有點混亂,但我認爲應該這樣做。

0

是否有可能需要JOIN查詢?如果你想連接兩個表或兩個表的一部分,你應該使用JOIN。

看看這個作爲一個開始,如果你需要了解更多LINK

希望幫助!

1

有SQL內幾種語言:

DDL:數據定義語言 - 這定義的模式(表,列的結構,數據類型) - 添加列到表格會影響表格定義,並且所有行將具有該新列(不僅僅是根據標準的某些行)

DML:數據操作語言 - 這會影響表格中的數據,並且插入,更新或其他更改會下降進入這個,你可以更新一些數據根據標準(並且這是WHERE子句將進入的地方)

ALTER是DDL語句,而INSERTUPDATE是DML語句。

這兩者不能真正混在一起,因爲你在做什麼。

您應該在ALTER表中添加該列,然後在INSERTUPDATE列中包含適當的數據。