如何将表格 foo 中的条目仅插入表格 waldo 中的comm_id,而其他列(托管,状态和类型)是否以静态值添加?
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 |
TABLE waldo
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 未添加到 foo ,因为该ID已存在。
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);
有没有办法操纵或组合这些查询,这样我就可以将所有 comm_id 从waldo转换为foo并同时放置静态值?非常感谢您的建议和想法。
答案 0 :(得分:1)
是吗
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);
注意我省略了boolean true和nulls的引号,这只是猜测不知道foo的结构
答案 1 :(得分: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
);