如果我有几个LOJ
s 和几个,我应该使用INNER JOINS
正确的标准句法结构吗?
示例场景
- 5 个表 #A - #E 都有一个 UserId 列,每个表都有一个额外的度量列 - 表 #A 中的 MeasureA,表 #B 中的 MeasureB 等。
- 表#A、#B、#C 都具有相同的一组 UserId
- 表#D 和#E 在#A-#C 中具有不同的用户ID 子集。
这是要使用的正确结构吗:
SELECT
#A.UserId,
#A.MeasureA,
#B.MeasureB,
#C.MeasureC,
D = COALESCE(#D.MeasureD,0.),
E = COALESCE(#E.MeasureE,0.)
FROM
#A
JOIN #B
ON #A.UserId = #B.UserId
JOIN #C
ON #A.UserId = #C.UserId
LEFT OUTER JOIN #D
ON #A.UserId = #D.UserId
LEFT OUTER JOIN #E
ON #A.UserId = #E.UserId
还是应该在#A 的子查询中应用 LOJ?
SELECT
X.UserId,
X.MeasureA,
#B.MeasureB,
#C.MeasureC,
X.D,
X.E
FROM
(
SELECT
#A.UserId,
#A.MeasureA,
D = COALESCE(#D.MeasureD,0.),
E = COALESCE(#E.MeasureE,0.)
FROM #A
LEFT OUTER JOIN #D
ON #A.UserId = #D.UserId
LEFT OUTER JOIN #E
ON #A.UserId = #E.UserId
) X
JOIN #B
ON X.UserId = #B.UserId
JOIN #C
ON X.UserId = #C.UserId