KM.*_*KM. 10
这应该按你的意愿工作:
SELECT
*
FROM A
left outer join B on A.c1 = B.c1
left outer join C on B.c2 = C.c2
left outer join D on A.c1 = D.c1
Run Code Online (Sandbox Code Playgroud)
数据库引擎会查看您要加入的内容,而不是联接的顺序.D加入A,与B或C无关
您加入的顺序无关紧要,数据库将构建所有表中每个行组合的结果集,受on子句限制。例如,因为 1=1 始终为真,这将为您提供 1000 行:
select *
from ten_row_table A
left join ten_row_table B on 1=1
left join ten_row_table C on 1=1
Run Code Online (Sandbox Code Playgroud)
但这会给你 10 行:
select *
from ten_row_table A
left join ten_row_table B on A.id = B.id
left join ten_row_table C on A.id = C.id
Run Code Online (Sandbox Code Playgroud)
您可以通过缩进使复杂的查询更具可读性。我们将第二个和进一步的依赖项缩进四个空格,例如:
from A
left outer join B on A.c1 = B.c1
left outer join C on B.c2 = C.c2
left outer join D on C.c3 = D.c3
left outer join E on B.c2 = E.c2
left outer join F on A.c1 = F.c1
Run Code Online (Sandbox Code Playgroud)