Почему есть разница в результатах запроса? - PullRequest
0 голосов
/ 09 июня 2010
  1. SELECT count (*) FROM Table1 t1
  2. SELECT count (*) FROM Table1 t1, где t1.ID не указан (выберите ID из Table2)
  3. SELECT Count (*) FROM Table1 t1 внутреннее соединение Table2 t2 на t1.ID = t2.ID

Результаты: -

  1. 83
  2. 62
  3. 26

Почему есть разница в результатах 2-го и 3-го запросов, когда итоговое значение 83 из I-го запроса? Разве не должно быть 57 (из 2-го запроса), если 3-й результат равен 26

OR

21 (из 3-го запроса), если результат 2-го равен 62? Может ли кто-нибудь помочь мне здесь, что не так в моих утверждениях выше?

Ответы [ 5 ]

3 голосов
/ 09 июня 2010

Мои предположения:

  • Столбцы идентификаторов не являются уникальными

  • Столбцы идентификаторов могут быть NULL

2 голосов
/ 09 июня 2010

Я подозреваю, что запросы 1 и 2 верны, и у вас есть несколько записей в таблице 2 с одинаковым идентификатором, поэтому третий запрос возвращает несколько совпадений для некоторых идентификаторов в таблице 1.

1 голос
/ 09 июня 2010
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)

1 голос
/ 09 июня 2010

У вас, вероятно, есть дубликаты записей во второй таблице для идентификатора ... следовательно, вы получаете больше ... просто догадываясь ...

1 голос
/ 09 июня 2010

Вы получаете несколько строк для одного и того же идентификатора в # 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...