2010-06-09 2 views
0
  1. SELECT COUNT (*) FROM Table1 t1
  2. SELECT COUNT (*) FROM Table1 t1 Где t1.ID не в (выбрать идентификатор из Table2)
  3. SELECT COUNT (*) FROM Table1 t1 внутреннее соединение table2 t2 на t1.ID = t2.ID

Результаты: -Почему существует разница в результатах запроса?

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

ИЛИ

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

+0

Может быть, вы должны смотреть на данные и решить, что правильный ответ должен быть, и поэтому h запрос дает вам неправильный ответ? – araqnid

ответ

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

3

Мои догадки:

  • ID столбцы не являются уникальными

  • ID столбцы могут быть NULL

1

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

2

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

1

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

Смежные вопросы