2017-08-07 18 views
0

このSQLステートメントを正しく取得できません。私は別のテーブルにバンドの電子メールを選択したいが、私は私が間違ってやっているのか理解していない:SQL Serverテーブルから別のテーブルにデータをインポート

INSERT INTO submitted (mail) 
    SELECT 
     submitted.bandid, 
     band.mail, 
     band.id 
    FROM 
     band 
    WHERE 
     submitted.bandid = band.id 

誰も私を助けることができますか?

+0

あなたは、あなたの新しいテーブルでただ一つのカラム( 'mail')に挿入したいと思っていますが、元のテーブルから** **カラムを選択していればうまくいきません。 **どちらかの** **あなたはあなたの目的地のテーブルにそれらの値を挿入したい** 3 ** **列を定義する**または**あなたが実際にソースからデータを挿入するために使用したい** 1 **列を選択する表 –

答えて

2

あなたのテーブルが結合されていなかったにも、あなたはINTOを挿入するには1列を指定していたが、あなたのSELECTクエリが3列に含まれている、これを試してみてください:

INSERT INTO submitted (mail) 
SELECT 
band.mail 
FROM band 
INNER JOIN submitted ON submitted.bandid = band.id 
1

あなたは、エラーメッセージを言及していないあなたは」私は問題があると思うが、文のINSERT部分に1列しか指定されていないが、SELECT部分は多くの列を返す。一つのテーブルから別のテーブルへ

コピーの一部のカラムだけ:

INSERT INTO table2 (column1, column2, column3, ...) 
SELECT column1, column2, column3, ... 
FROM table1 
WHERE condition; 
0

私は、あなたがupdateを望ん疑わない

This w3schools page

は、このクエリは構造化すべきかの良い例があります insert

UPDATE s 
    SET mail = b.mail 
    FROM submitted s JOIN 
     band b 
     ON s.bandid = b.id; 

insertは、新しいをテーブルに挿入します。 updateの既存列の列を更新します。

関連する問題