簡體   English   中英

psql-將條目從另一個表插入到一個表中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM