嵌套在postgres中从右到左连接

时间:2015-06-05 10:33:05

标签: postgresql join left-join

我有一个很大的疑问,但这一切归结为:

SELECT * FROM user
LEFT JOIN tableA ON tableA.user_id = user.id
JOIN tableB ON tableB.a_id = tableA.id

现在,我得到的结果太少了。如果用户与(tableA x tableB)的组合不存在,我仍然想要用户。所以语法错误,我想要的是这样的:

SELECT * FROM user
LEFT JOIN (tableA ON tableA.user_id = user.id
           JOIN tableB ON tableB.a_id = tableA.id)

是可能的,也许没有RIGHT JOINS?

当然,我不想将第二个JOIN更改为LEFT JOIN,因为这会产生太多结果。

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

SELECT * FROM user
LEFT JOIN (SELECT * FROM tableA
           JOIN tableB ON tableB.a_id = tableA.id) t
ON t.user_id = user.id

如果存在子查询,则需要在子查询中选择不同的列。