[英]psql - Inserting entries into a table from another table
如何僅將表waldo中的comm_id插入表foo中 ,而將其他列(托管,狀態和類型)添加為靜態值?
表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 |
值托管=真,狀態= NULL和類型= NULL是靜態的,因此我只想按值添加它們。 並且COMM_14.15.7未添加到foo中,因為該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);
有沒有什么方法可以處理或組合這些查詢,以便我可以將所有wald的comm_id從waldo轉換為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);
注意,我省略了布爾值true和null周圍的引號,這只是一個猜測,不知道foo的結構
嘗試這個:
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
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.