嵌套在postgres中从右到左连接

nesting joins right to left in postgres

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

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,因为那样会给出太多结果。

你可以试试这个:

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

如果存在子查询,您将需要 select 不同的列。