2010-06-09 143 views
0
  1. SELECT COUNT(*)FROM表1 T1
  2. SELECT COUNT(*)FROM表1 T1凡t1.ID未在(选择从表2 ID)FROM表1 T1
  3. SELECT COUNT(*)内加入表2 T2上t1.ID = t2.ID

结果: -为什么查询结果有差异?

为什么从Ist查询中当总数为83时第二和第三查询的结果有差异?难道不应该是要么57(从第二查询),如果3的结果是26

OR

21(从第3次查询),如果第二次的结果是62? 有人可以帮我在这里什么是错误的我上面的选择陈述?

+0

也许你应该看看数据,并决定什么正确的答案应该是,因此也是h查询是否给你错误的答案? – araqnid 2010-06-09 18:34:25

回答

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)

+0

谢谢先生。你是对的。我得到了我的答案 – Jango 2010-06-09 18:42:12

3

我的猜测:

  • ID列不是唯一

  • ID列可以为NULL

1

你越来越多行对同一ID在#3。

2

我怀疑,查询1和2是正确的,你必须在表2中的一些记录具有相同ID,因此第三查询表返回多个匹配的一些标识1.

1

您probaly有重复在ID第二个表中的记录...因此你获得更多...只是猜测......