2

クエリでこれらの 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

4

2 に答える 2