2017-09-21 9 views
0

からテーブルにエントリを挿入しますか?psqlの - 他の列(管理ステータス、およびタイプ)は、静的な値に加算されながらテーブル<strong>ワルド</strong>からテーブル<strong>のfooのみcomm_id</strong>にエントリを挿入するためにどのように別のテーブル

TABLE fooの

 comm_id  | managed | status | type | 
-----------------+---------------+--------------+------+ 
    COMM_11.21.6 |  true  |  NULL  | NULL | 
    COMM_14.15.7 |  true  |  NULL  | NULL | 
    COMM_13.03.9 |  true  |  NULL  | NULL | 

表ワルド

 comm_id  | address | stat_id | 
-----------------+---------------+-----------+ 
    COMM_10.10.6 |  12345  |  1  | 
    COMM_14.15.7 |  78543  |  2  | 

TABLE fooの所望の出力

 comm_id  | managed | status | type | 
-----------------+---------------+--------------+------+ 
    COMM_11.21.6 |  true  |  NULL  | NULL | 
    COMM_14.15.7 |  true  |  NULL  | NULL | 
    COMM_13.03.9 |  true  |  NULL  | NULL | 
    COMM_10.10.6 |  true  |  NULL  | NULL | 

値managed = true、status = NULL、type = NULLは静的なので、値で追加したいだけです。 COMM_14.15.7は、既にidが存在するため、fooに追加されません。

INSERT INTO foo (comm_id, managed, status, type) VALUES ('id from waldo', 'true', 'NULL', 'NULL'); 

上記のクエリは静的な値をテーブルに挿入します。

INSERT INTO foo SELECT comm_id FROM waldo WHERE comm_id NOT IN (SELECT comm_id FROM foo); 

私がfooにワルドからすべてのcomm_idを得ると同時に、静的な値を置くことができますので、これらのクエリを操作したり、結合する方法はありますか?あなたの提案とアイデアは非常に高く評価されています。

答えて

1

は私がfooの構造を知らないだけで推測している、ブール真とヌルの前後に引用符を省略することが

INSERT INTO foo (comm_id, managed, status, type) 
select comm_id , true, NULL, NULL 
from waldo 
WHERE comm_id NOT IN (SELECT comm_id FROM foo); 

ノートです

+0

はい。これは、私が望む出力を正確に返します。ありがとうございました! – Junior

0

これを試してみてください:

INSERT INTO foo (com_id,managed,status,type) 
select comm_id,'true',NULL,NULL from 
(
SELECT comm_id FROM waldo 
minus 
SELECT comm_id FROM foo 
);