【问题标题】:psql - Inserting entries into a table from another tablepsql - 将条目从另一个表插入到一个表中
【发布时间】:2017-09-21 15:59:38
【问题描述】:

如何将条目插入到表 foo 仅来自表 waldo 的 comm_id 而其他列(托管、状态和类型)以静态值添加?

表 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 没有添加到 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 并同时放入静态值?非常感谢您的建议和想法。

【问题讨论】:

    标签: sql sql-insert postgresql-9.3


    【解决方案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);
    

    注意我省略了布尔真值和空值的引号,这只是一个不知道 foo 结构的猜测

    【讨论】:

    • 是的。这恰好返回了我想要的输出。谢谢!
    【解决方案2】:

    试试这个:

    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
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-06
      • 2014-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多