我有一个像下面这样的查询,它返回我期望的正确行数。(它必须与返回相同数据集但具有不同于其他相关表的关联信息的类似查询匹配。
SELECT *
FROM LK
INNER JOIN STC ON LK.V = STC.VI
LEFT OUTER JOIN BC ON LK.BC = BC.ID
LEFT OUTER JOIN K AS LT ON ISNULL(BC.ZA, LK.VH) = LT.KNN
WHERE
LT.KI IS NOT NULL AND LT.KS = 0
OR
LT.KI IS NULL
ORDER BY
LK.Z
但是,一旦我添加了其他内部联接,我实际上会得到更多的行。我认为内部联接只在联接的两边都找到信息时返回行,所以我希望能返回相同或更少的行。但我的出行量是原来的两倍。
例如:
SELECT *
FROM LK
INNER JOIN STC ON LK.V = STC.VI
INNER JOIN VK ON LK.V = VK.ID
INNER JOIN K AS A ON VK.AIN = A.KNN
LEFT OUTER JOIN BC ON LK.BC = BC.ID
LEFT OUTER JOIN K AS LT ON ISNULL(BC.ZA, LK.VH) = LT.KNN
WHERE
LT.KI IS NOT NULL AND LT.KS = 0
OR
LT.KI IS NULL
ORDER BY
LK.Z
这有道理吗?如何再添加两个内部联接会导致返回更多行?
更重要的是,我的实际问题是,如何调整第二个查询,使它返回与第一个查询相同的行,但带有来自联接表的额外列?