什么是正确的语法来执行外部联接下列要求:级联左外联接
A于A.c1 = B.c1
乙左外左外连接乙加入C对B.c2 = C.c2
A.c1上的左外连接D = D.c1
所以A,B和C级联以及A和D级联。
我知道如何编写A-> B-> C,但我不知道如何添加D.我需要范围或括号。
什么是正确的语法来执行外部联接下列要求:级联左外联接
A于A.c1 = B.c1
乙左外左外连接乙加入C对B.c2 = C.c2
A.c1上的左外连接D = D.c1
所以A,B和C级联以及A和D级联。
我知道如何编写A-> B-> C,但我不知道如何添加D.我需要范围或括号。
这应该工作,只要你想:
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
数据库引擎看什么你都加入到,没有的连接顺序。 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
但是这会给你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
可以使复杂的查询稍微压痕可读。我们通过四个空格缩进第二个和更多的依赖关系,例如:
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
尼斯缩进计划! –
+1:我太慢了:( –