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
を使用して
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
を使用して
名前がPeterであるtable2のすべてのレコードに対してテーブル1にレコードを挿入する場合は、このアプローチが有効です。
この挿入クエリは、名前が "Peter"のtable2のすべてのレコードをtable1に挿入します。あなたは、テーブルに存在し、複数のピーターですMacmeeが彼の答え
insert into dbo.table1
(
value1,
value2
)(
select
6,
table2.id
from
table2
where
name = 'Peter'
)
ありがとうございました!それはうまく動作します。 –
試してみてください。あなたのネストされたクエリ(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のすべての行に新しい行を挿入するのであれば、最初の行のみを挿入することに注意してください。
で説明したように、あなたが
LIMIT
使用できる1つのレコードのみを挿入したい場合は?私のようなそれを行うだろう: INSERT INTO [TABLE1] ([VALUE1]、 [値2] )は、SELECT FROM 6、 [ID] [表2] WHERE [名] = 'ピーター'; –'table2'で見つかった' 'Peter 'の数に関係なく、' 'table2'にある* each *' 'Peter'や* *ただ一つの* recordに対して、* 1 *レコードを' table1'に挿入しますか? ? –