为什么在组合外部和内部连接时表的顺序很重要?postgres失败如下:
SELECT grp.number AS number,
tags.value AS tag
FROM groups grp,
insrel archiverel
LEFT OUTER JOIN ownrel ownrel ON grp.number = ownrel.dnumber
LEFT OUTER JOIN tags tags ON tags.number = ownrel.snumber
WHERE archiverel.snumber = 11128188 AND
archiverel.dnumber = grp.number
Run Code Online (Sandbox Code Playgroud)
结果:
ERROR: invalid reference to FROM-clause entry for table "grp" LINE 5: LEFT OUTER JOIN ownrel ownrel ON grp.number = ownrel.d...
^ HINT: There is an entry for table "grp", but it cannot be referenced from this part of the query. …Run Code Online (Sandbox Code Playgroud) 说,我有以下查询:
SELECT * FROM TABLE1
JOIN TABLE2 ON ...
LEFT JOIN TABLE3 ON ...
JOIN TABLE3_1 ON ...
JOIN TABLE3_2 ON ...
JOIN TABLE3_3 ON ...
Run Code Online (Sandbox Code Playgroud)
我想要实现的是TABLE3,TABLE3_1,TABLE3_2,TABLE3_3内部连接(我只需要它们之间的所有匹配数据,其余的都没有).然后对于TABLE1,TABLE2也有内部连接.但是从TABLE1 + TABLE2结果来看,有些将没有相应的TABLE3条目,这没关系,我仍然会想要它.
如果按原样运行上面的伪代码,显然它不会达到相同的结果.