当使用SQL满足特殊条件时,如何插入两行?

当使用SQL满足特殊条件时,如何插入两行?,sql,psql,Sql,Psql,基本上我有这样的情况: 对于表中的每一行,我必须获取其中一列的值并将其插入到新表中 这是一个简单的查询: SELECT val INTO NEW_TABLE FROM SOURCE_TABLE; 然而,我有一个问题。在某些情况下,我想为同一条目插入两行 我可以通过以下三个查询来实现: SELECT 'val' INTO NEW_TABLE FROM SOURCE_TABLE WHERE NOT SPECIAL_CONDITION; SELECT 'special_val1' INTO NEW

基本上我有这样的情况:

对于表中的每一行,我必须获取其中一列的值并将其插入到新表中

这是一个简单的查询:

SELECT val
INTO NEW_TABLE
FROM SOURCE_TABLE;
然而,我有一个问题。在某些情况下,我想为同一条目插入两行

我可以通过以下三个查询来实现:

SELECT 'val'
INTO NEW_TABLE
FROM SOURCE_TABLE WHERE NOT SPECIAL_CONDITION;

SELECT 'special_val1'
INTO NEW_TABLE
FROM SOURCE_TABLE WHERE SPECIAL_CONDITION;

SELECT 'special_val2'
INTO NEW_TABLE
FROM SOURCE_TABLE WHERE SPECIAL_CONDITION;
但是,有没有办法用一个单一的

我想到了这样的事情(可能不起作用,因为我还没有测试过它):

但是,如果最终变得更有效的话,冗长是可以的。 那么,有没有一种更有效的方法可以通过单个查询实现这一点呢?

这就是您想要的吗

SELECT *
INTO NEW_TABLE 
FROM (SELECT (CASE WHEN condition THEN 'val1' ELSE 'val' END) as val
      FROM SOURCE_TABLE
      UNION ALL
      SELECT 'val2'
      FROM SOURCE_TABLE
      WHERE CONDITION
     ) t;
. . 你真的想要“psql”标签吗?
SELECT *
INTO NEW_TABLE 
FROM (SELECT (CASE WHEN condition THEN 'val1' ELSE 'val' END) as val
      FROM SOURCE_TABLE
      UNION ALL
      SELECT 'val2'
      FROM SOURCE_TABLE
      WHERE CONDITION
     ) t;