当使用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;