Я не думаю, что это даже SQL вопрос, я просто борюсь с логикой c и, вероятно, имею Момент Глупости.
Я пытаюсь найти количество адресов электронной почты, которые существуют в таблице cms
, но отсутствуют в таблице cm
. Я использую postgres 10.4. Каждая из таблиц содержит один столбец varchar, «email».
Оба этих запроса возвращают счет 18309:
SELECT COUNT(DISTINCT email) FROM cms;
SELECT COUNT(email) FROM cms;
Оба этих запроса возвращают счет 17949:
SELECT COUNT(DISTINCT email) FROM cm;
SELECT COUNT(email) FROM cm;
, что означает, что ... 18309 - 17949 = на 360 записей больше cms
, чем cm
.
Затем я запрашиваю diff с:
SELECT COUNT(cms.email) FROM cms LEFT JOIN cm ON cm.email = cms.email WHERE cm.email IS NULL;
Этот запрос возвращает 369.
Откуда исходит расхождение?
- Обе таблицы не содержат в себе повторяющихся записей.
- В одной таблице на 360 записей больше, чем в другой.
- В одной таблице существует 369 записей, но нет другой.
Что это за девять записей ??