2016-04-24 19 views
0

を挿入します。私は別のテーブルからデータを挿入するには、以下のクエリを使用していますSQL Serverでの選択クエリのエラーからに

DECLARE @MATNO NVARCHAR(10), @GLOBALREV INT, @LOCALREP INT 

SET @MATNO = '7AGME' 
SET @GLOBALREV = 11 
SET @LOCALREP = 1 

INSERT INTO CIGARETTE_HEADER 
VALUES 
    (SELECT * 
    FROM CIGARETTE_HEADER_BK1 
    WHERE MATERIAL_NUMBER = @MATNO 
     AND GLOBAL_REVISION = @GLOBALREV 
     AND LOCAL_REVISION = @LOCALREP) 

列をテーブルの両方で同じですが、私は次のエラーを取得しています:

Msg 156, Level 15, State 1, Line 7
Incorrect syntax near the keyword 'SELECT'.

Msg 102, Level 15, State 1, Line 7
Incorrect syntax near ')'.

ここで間違いを知らせてください。

INSERT INTO CIGARETTE_HEADER 
SELECT * FROM CIGARETTE_HEADER_BK1 
WHERE MATERIAL_NUMBER = @MATNO AND 
     GLOBAL_REVISION = @GLOBALREV AND 
     LOCAL_REVISION = @LOCALREP 

それはINSERT声明に参加する両方のテーブルのすべてのフィールド名を引用することも好ましい明示的にある:

答えて

1

へ問題のビットを少し拡大してください。

VALUES()は実際にはテーブルコンストラクタです。 行をテーブルに挿入するときは、SELECTを使用して行をフェッチするか、VALUEコンストラクタを使用します。

例では行を挿入するためにINSERT INTO ... VALUESを使用していますが、複数の行を挿入してコンマで区切って挿入することができます。

例:表(COL1、COL2)INTO INSERT VALUES(1、2) 、(3、4) 、(5、6)

はあなたのテーブルに3行のセットを挿入します。

VALUESを使用して派生テーブルを作成し、高度なデータ操作を行うこともできます。

https://msdn.microsoft.com/en-us/library/dd776382.aspx

3

あなたはVALUESキーワードは必要ありません。

+0

ありがとうございました!それは働いて....しかし、ここではvaluesキーワードは必要ありません... VALUESキーワードを使用すると、すべてのカラム名を使用する必要がありますか? –

+0

@RanitDas 'VALUES'は、特定の値をテーブルに挿入する場合に使用されます。ただし、このクエリでは 'INSERT INTO SELECT'が使用されます(' VALUES'なし)。 –

1

VALUES()表記を使用する必要はありません。静的な値と1つのレジスタのみを挿入する場合にのみ使用します。 例: INSERT INTOテーブル VALUES( 'value1'、12、newid());

また、私はこのように、あなたが挿入することを計画した列の名前を書くことをお勧めします:あなたのケースでは

INSERT INTO Table 
(String1, Number1, id) 
VALUES('value1',12, newid()); 

、同じだけ選択して操作を行います。

DECLARE @MATNO NVARCHAR(10), @GLOBALREV INT, @LOCALREP INT; 

SET @MATNO = '7AGME'; 
SET @GLOBALREV = 11; 
SET @LOCALREP = 1; 

INSERT INTO CIGARETTE_HEADER 
(ColumnName1, ColumnName2) 
SELECT ColumnNameInTable1, ColumnNameInTable2 
FROM CIGARETTE_HEADER_BK1 
WHERE MATERIAL_NUMBER = @MATNO 
AND GLOBAL_REVISION = @GLOBALREV 
AND LOCAL_REVISION = @LOCALREP); 
関連する問題