sql – 向查询添加INNER JOIN不应该增加返回的行数?

前端之家收集整理的这篇文章主要介绍了sql – 向查询添加INNER JOIN不应该增加返回的行数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个如下所示的查询返回正确的行数. (它必须匹配类似的查询,返回相同的数据集,但与其他相关表不同的关联信息.
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,那么它将增加行数.我不明白你的架构足以修复它.

猜你在找的MsSQL相关文章