【问题标题】:Why there is a difference in query results?为什么查询结果有差异?
【发布时间】:2011-03-01 19:46:13
【问题描述】:
  1. SELECT count(*) FROM Table1 t1
  2. SELECT count(*) FROM Table1 t1 Where t1.ID not in (select ID from Table2)
  3. SELECT Count(*) FROM Table1 t1 inner join Table2 t2 on t1.ID = t2.ID

结果:-

  1. 83
  2. 62
  3. 26

Ist Query 的总数为 83 时,为什么第 2 次和第 3 次查询的结果有差异?如果第三个结果是 26,它不应该是 57(来自第二个查询)吗

21(来自第三个查询)如果第二个结果是 62? 有人可以帮我看看我上面的选择语句有什么问题吗?

【问题讨论】:

  • 也许您应该查看数据并确定正确答案应该是什么,因此哪个查询给出了错误答案?

标签: sql sql-server tsql


【解决方案1】:
T1 IDs: 11, 12, 13
T2 IDs: 11, 11, 11

T1.Count = 3
T1.WhereNotInT2.Count = 2
T1.JoinT2.Count = 3

要解决您的查询,请change Count(*)Count(DISTINCT T1.ID)

【讨论】:

    【解决方案2】:

    您可能在第二个表中有重复的 ID 记录...因此您会得到更多...只是猜测...

    【讨论】:

      【解决方案3】:

      我怀疑查询 1 和 2 是正确的,并且您在表 2 中有一些具有相同 ID 的记录,因此第三个查询返回表 1 中某些 ID 的多个匹配项。

      【讨论】:

        【解决方案4】:

        您在 #3 中获得了相同 ID 的多行。

        【讨论】:

          【解决方案5】:

          我的猜测:

          • ID 列不是唯一的

          • ID 列可能为 NULL

          【讨论】:

            猜你喜欢
            • 2021-07-13
            • 1970-01-01
            • 1970-01-01
            • 2015-05-04
            • 1970-01-01
            • 2015-10-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多