1. ホーム
  2. sql

[解決済み] PostgreSQL: 別のテーブルから挿入する

2022-05-10 09:32:25

質問

あるテーブルに別のテーブルからデータを挿入しようとしていますが、テーブルには共通するカラムが1つしかありません。問題は、TABLE1がNULL値を受け入れない列を持っているため、それらを空のままにすることができず、TABLE2からそれらを取得することができないことです。

私はTABLE1: id, col_1 (not null), col_2(not null), col_3 (not null)です。

とTABLE2があります。 id、col_a、col_b、col_c。

TABLE2からTABLE1にidを挿入し、col_1-3を"data1", "data2", "data3" といったハードコードされた文字列で埋めるには、どうしたらよいでしょうか?

INSERT INTO TABLE1 (id) SELECT id FROM TABLE2 WHERE col_a = "something";

になります。

ERROR: 列 "col_1" の NULL 値は not-null 制約に違反します。

どのように解決するのですか?

SELECTでリテラル値を指定することができます。

INSERT INTO TABLE1 (id, col_1, col_2, col_3)
SELECT id, 'data1', 'data2', 'data3'
FROM TABLE2
WHERE col_a = 'something';

セレクトリストには 任意の値表現 :

しかし、selectリストの式はFROM句のテーブル式でどの列も参照する必要はなく、例えば定数算術式でも構いません。

そして、文字列リテラルは確かに値式です。