嵌套在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 不同的列。
我有一个很大的疑问,但归结为:
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 不同的列。