【发布时间】:2013-08-03 20:54:01
【问题描述】:
我正在尝试将三个单独的查询合并为一个。每个查询从不同的表中选择不同的列,但这些表确实有一些共同的列。
我尝试做的是 LEFT JOINing 两个表到另一个,只要最左边的表返回结果,这很有效。但是如果最左边的表没有返回结果,那么就根本没有返回结果(即使被 LEFT JOINed 的两个查询有结果)。
伪代码:
SELECT a.col_1, b.col_2, c.col_3
FROM tableA a
LEFT JOIN tableB b ON b.someCol = a.someCol
LEFT JOIN tableC c ON c.someCol = a.someCOL
WHERE a.anotherCol = :someVal AND a.yetAnotherCol = :anotherVal
如果 tableA 有结果,那么查询结果就是我想要的(即它返回 col_1、col_2|null 和 col_3|null 的三列)。但是如果tableA没有结果,那么查询返回null。
当左连接字符串中最左边的表没有结果时,有什么方法仍然返回结果?
【问题讨论】: