🖥 SQL совет: как избежать хитрой ошибки с LEFT JOIN
Одна из самых коварных SQL-ошибок возникает при использовании LEFT JOIN вместе с условиями в WHERE.
Типичная ситуация:
Ты делаешь LEFT JOIN, чтобы сохранить строки из основной таблицы,
а потом незаметно превращаешь его в INNER JOIN.
Почему так происходит
Если в WHERE есть условие на колонку из присоединенной таблицы,
строки с NULL автоматически отфильтровываются.
В итоге:
- LEFT JOIN есть
- но результат как у INNER JOIN
- данные «пропадают», и баг сложно заметить
Правильное правило
Все условия для таблицы из LEFT JOIN:
- должны быть в ON
- а не в WHERE
Иначе ты теряешь строки, где JOIN не сработал.
Когда это особенно опасно
- отчеты и аналитика
- подсчет метрик
- поиск «отсутствующих» данных
- антиджойны
Эта ошибка не ломает запрос.
Она ломает доверие к данным.
Post #1228
3.95K
- 🔥 21
- 👍 8
- ❤ 1