我想在Postgresql 9.5 JOIN
两列中ON
两个表:
CREATE TABLE table_a (col1 INT, col2 INT, col3 TEXT);
CREATE TABLE table_b (col1 INT, col2 INT, col3 TEXT);
INSERT INTO table_a (col1, col2, col3)
VALUES (1, 2, 'foo'), (NULL, 3, 'foo');
INSERT INTO table_b (col1, col2, col3)
VALUES (1, 2, 'bar'), (NULL, 3, 'bar');
当我加入
时SELECT a.col3, b.col3
FROM table_a a
LEFT JOIN table_b b
ON a.col1 = b.col1 AND
a.col2 = b.col2;
未加入null
值的行。
a.col3 | b.col3
---------------
foo | bar
foo | <null>
但是,我想将两个列连接起来,即包括其中一个值为null的列。所以在这个例子中应该有foo bar出现两次。我怎么能做这个工作?
答案 0 :(得分:1)
如果您在该列中没有值,则可以使用coalesce()
:
SELECT a.col3, b.col3
FROM table_a a
LEFT JOIN table_b b
ON ON coalesce(a.col1,-1) = coalesce(b.col1,-1) AND a.col2 = b.col2
请注意,如果不包含col1 = -1
的任何(实际)行,则仅才能正常工作,否则您将得到错误的结果!