2017-05-19 9 views
0

2つの値を挿入したが、1つは固定数で、もう1つは別のテーブルのIDです。サブクエリが1行以上を返す -Sql INSERT INTO値を組み合わせて失敗を選択する

今、私はエラー

#1242を得ました。

INSERT INTO table1 (value1, value2) VALUES 
(6 , (SELECT id FROM table2 WHERE name = 'Peter')) 

たぶん、あなたは私を助けることができます。 LIMIT 1を使用して

+0

で説明したように、あなたがLIMIT使用できる1つのレコードのみを挿入したい場合は?私のようなそれを行うだろう: INSERT INTO [TABLE1] ([VALUE1]、 [値2] )は、SELECT FROM 6、 [ID] [表2] WHERE [名] = 'ピーター'; –

+0

'table2'で見つかった' 'Peter 'の数に関係なく、' 'table2'にある* each *' 'Peter'や* *ただ一つの* recordに対して、* 1 *レコードを' table1'に挿入しますか? ? –

答えて

1

名前がPeterであるtable2のすべてのレコードに対してテーブル1にレコードを挿入する場合は、このアプローチが有効です。

この挿入クエリは、名前が "Peter"のtable2のすべてのレコードをtable1に挿入します。あなたは、テーブルに存在し、複数のピーターですMacmeeが彼の答え

insert into dbo.table1 
(
    value1, 
    value2 
)(
    select 
      6, 
      table2.id 
    from 
      table2 
    where 
      name = 'Peter' 
) 
+0

ありがとうございました!それはうまく動作します。 –

0

試してみてください。あなたのネストされたクエリ(SELECT id FROM table2 WHERE name = 'Peter' LIMIT 1)

INSERT INTO table1 (value1, value2) VALUES (6 , (SELECT id FROM table2 WHERE name = 'Peter' LIMIT 1))

この方法は、それだけで最初のマッチが返されます、そして、あなたのインサートを通過する必要があります。

名前が "Peter"のtable2のすべての行に新しい行を挿入するのであれば、最初の行のみを挿入することに注意してください。

関連する問題