我有一个如下所示的查询返回正确的行数. (它必须匹配类似的查询,返回相同的数据集,但与其他相关表不同的关联信息.
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
这有道理吗如何添加两个内部连接会导致更多行被返回?
解决方法
如果每个LK有多个VK,那么它将增加行数.我不明白你的架构足以修复它.