仅当记录存在或返回null时才连接表?

时间:2017-05-10 01:08:21

标签: postgresql join left-join

我正在查询多个表中的记录。 id_value中的任何schema.table_one都有记录,但schema.table_two中可能存在或可能不存在(或查询中加入的其他表)。

以下查询格式在所有查询表中都有给定id_val的记录时可以正常工作:

SELECT one.value_one, two.value_two
FROM schema.table_one one LEFT JOIN schema.table_two two 
    ON one.id_value = two.id_value 
    WHERE one.id_value = 'id_val' AND two.other_column = 'other_val';

如果记录已从table_two中删除或者不存在(和/或任何其他连接的表),则不会返回任何结果。

如果two.value_two中的给定id_val没有记录,或者只有记录存在时加入,是否有办法为table_two返回null?

1 个答案:

答案 0 :(得分:1)

将与第二个表格相关的条件从WHERE移至ON

SELECT one.value_one, two.value_two
FROM schema.table_one one 
LEFT JOIN schema.table_two two 
    ON one.id_value = two.id_value 
    AND two.other_column = 'other_val'
WHERE one.id_value = 'id_val'