SQL:如何将两个表合并为一个

时间:2015-07-28 14:16:01

标签: postgresql

我已经阅读了将两个3行列合并为一个6行列的解决方案,但我想我还想要其他的。

我们假设您有两列:

Column 1      Column 2
NULL          D
B             NULL
C             NULL

有没有办法让一个表拥有所有信息?

Column 3
D
B
C

我在执行UNION ALL后获取这些列。所以这些不是 数据库表,但我选择的列。

我正在使用postgresql。

这是我到目前为止所尝试的:

SELECT col1, col2, t2.col3 from t1
LEFT JOIN t2
ON t1.col1 like  '%.'||t2.col3

UNION ALL

SELECT col1, col2, col3 From t1
LEFT JOIN t2
ON t1.col1 = concat(t2.col3, '.')

你可以看到,当我在不同的条件下加入相同的两张桌子时,我会得到不同的信息。

1 个答案:

答案 0 :(得分:2)

您正在寻找的功能是COALESCE

SELECT COALESCE(Column1,Column2) AS Column3 
FROM t1

你试图这样做的方式非常复杂,你可能也可以像

那样解决它
SELECT Column1 FROM t1 WHERE Column1 IS NOT NULL
UNION ALL
SELECT Column2 FROM t1 WHERE Column2 IS NOT NULL

我坚持第一种方式