INSERT 操作内で SELECT を行うにはどうすればよいですか?
insert into tableX (a_id, b_id)
VALUES ((SELECT service_id
FROM tableY
WHERE id = 10, 2));
しかし、サーバーは構文エラーを返します。なぜでしょうか?
SQL Error [156] [S0001]: Incorrect syntax near the keyword 'select'.
ベストアンサー1
私の最初の回答は有効な解決策を示していましたが、エラーの原因については実際には間違っていました。VALUES 句内でスカラー サブクエリを使用することは問題ありません。質問のステートメントの問題は、単に 1 つの括弧が間違った場所にあることです。スカラー サブクエリは括弧で囲む必要があります。
これは動作するはずです:
insert into tableX (a_id, b_id)
VALUES (
(SELECT service_id
FROM tableY
WHERE id = 10)
, 2
);
元の回答
VALUES
リテラル値と組み合わせてのみ使用できます。ただし、リテラル値はサブクエリで使用できます。次のようにします。
insert into tableX (a_id, b_id) SELECT service_id, 2 FROM tableY WHERE id = 10