Выгрузка пользователей с заказами: почему часть зарегистрированных не попала в результат
Вы проверяете, что все пользователи, зарегистрированные в этом году, попали в выгрузку:
SELECT u.id, u.email, o.id AS order_id
FROM users u
JOIN orders o ON o.user_id = u.id
WHERE u.created_at >= '2026-01-01';
В выгрузке 4 210 строк, а в таблице users за этот период 6 800 записей.
В чём причина расхождения?
- Пользователи без заказов в результат не попадают: для проверки полноты нужен LEFT JOIN
- Пользователи с несколькими заказами схлопнулись в одну строку, нужен DISTINCT
- Условие по дате нужно перенести в ON, иначе фильтр применяется не полностью
- Запрос вернёт всех пользователей, но у части строк поле order_id будет пустым
