如何在PostgreSQL中组合两列整数?

时间:2017-08-15 09:52:26

标签: sql postgresql

我有以下查询:

select col1, col2
from ...
where...

给出:

col1  col2
5
       17
4       5
12
5
       20
4      17
2       3

我想将其转换为一个没有重复的列,如下所示:

col3
5
17
4
12
20
2
3

我该怎么做? 我读了这个主题Combine two columns and add into one new column,但这不是我需要的......运算符||在这里没有帮助。

修改 col3 只是 col2 col1 中显示的所有数字的列表。

4 个答案:

答案 0 :(得分:4)

select coalesce(col1,col2) 
from table 

它将使用col1,如果col1为null,则col2

https://www.postgresql.org/docs/current/static/functions-conditional.html#FUNCTIONS-COALESCE-NVL-IFNULL

  

COALESCE函数返回其第一个参数   空值。仅当所有参数都为null时才返回Null。经常这样   用于在数据时用空值替换默认值   检索显示

答案 1 :(得分:4)

您似乎需要union

select col1 as col3 from t where col1 is not null
union
select col2 as col3 from t where col2 is not null

答案 2 :(得分:1)

您可以使用https://www.postgresql.org/docs/current/static/functions-conditional.html#FUNCTIONS-COALESCE-NVL-IFNULL中记录的COALESCE功能;它返回第一个非null的参数:

yesql# select col1, col2, coalesce(col1, col2) from foo;
 col1 │ col2 │ coalesce 
══════╪══════╪══════════
    5 │    ¤ │        5
    ¤ │   17 │       17
    4 │    5 │        4
   12 │    ¤ │       12
    5 │    ¤ │        5
    ¤ │   20 │       20
    4 │   17 │        4
(7 rows)

答案 3 :(得分:0)

  

col3只是col2和col1中出现的所有数字的列表。

在这种情况下,这可能是您正在寻找的:

SELECT col1
FROM ...
WHERE ...
UNION
SELECT col2
FROM ...
WHERE ...