我已经阅读了将两个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, '.')
你可以看到,当我在不同的条件下加入相同的两张桌子时,我会得到不同的信息。
答案 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
我坚持第一种方式