我正在查询多个表中的记录。 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?
答案 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'