-1

別のテーブルから列を追加しようとしているSQLテーブルがあります。テーブル変更クエリを実行した場合にのみ、テーブルから値を引き出して、接続しようとしている列と一致させません。

たとえば、テーブル 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

ALTERTABLEステートメントのWHERE句はありません。列(最初の2行)を追加してから、2つのテーブル間に定義した関係に基づいて行を挿入する必要があります。

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

于 2012-06-05T20:15:49.287 に答える
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

SQL にはいくつかの言語があります。

DDL: データ定義言語 - これはスキーマ (テーブル、列、データ型の構造) を定義します - テーブルに列を追加すると、テーブル定義に影響し、すべての行にその新しい列が含まれます (基準による一部の行だけではありません)。

DML: データ操作言語 - これはテーブル内のデータに影響を与え、挿入、更新、またはその他の変更がこれに該当し、基準に従って一部のデータを更新できます (ここでWHERE句が使用されます)。

ALTERは DDL ステートメントですが、INSERTUPDATEは DML ステートメントです。

あなたがやっているように、2つを実際に混在させることはできません。

ALTERテーブルに列を追加してから、INSERTまたはUPDATE列に適切なデータを含める必要があります。

于 2012-06-05T20:27:21.207 に答える
0

代わりにJOINクエリが必要になる可能性はありますか?2つのテーブルまたは2つのテーブルの一部を結合する場合は、JOINを使用する必要があります。

あなたがより多くのリンクを知る必要があるならば、最初にこれを見てください

お役に立てば幸いです。

于 2012-06-05T20:14:33.980 に答える