クエリでこれらの ID をハードコーディングせずに、ID のペアに関連付けられた値をいくつか挿入しようとしています。
より具体的には、次の表がありますfoo
。
create table if not exists foo(id int, val text);
そして、次のようにして値を挿入できます。
insert into foo
values
(10, 'qwe_1'),
(10, 'qwe_2'),
(10, 'qwe_3'),
(20, 'qwe_2'),
(20, 'asd_3'),
(20, 'asd_4');
10
しかし、私はそれらとを繰り返したくありません20
。
少し前に同様の質問をしました( SQL - WITH を使用して INSERT INTO で変数を宣言します)が、私の問題は解決しません。id ごとに追加する値のリストは任意であるため、SQL で値を繰り返す INSERTで提案されている結合などの使用方法も理解できません。
厳密には必要ありませんが、with
ステートメントを使用して最初に ID を宣言したいと思います。
with c (first_id, second_id) as (values (10, 20))
select * from c;
insert into
しかし、それをステートメントと組み合わせる方法がわかりません。この機能しないクエリがありますが、これは私が達成しようとしていることを示しています:
with c (first_id, second_id) as (values (10, 20))
insert into foo
values
(c.first_id, 'qwe_1'),
(c.first_id, 'qwe_2'),
(c.first_id, 'qwe_3'),
(c.second_id, 'qwe_2'),
(c.second_id, 'asd_3'),
(c.second_id, 'asd_4')
from c;
私の理解では、values (...), ...
ステートメントはテーブルを返すので、おそらく私が欠けているのは、このテーブルとテーブルを組み合わせる方法ですc
。