В таблицах orders и users есть одноимённые столбцы: user_id, updated_at, status. Аналитик пишет SELECT * FROM orders NATURAL JOIN users. Что произойдёт?

AСоединение произойдёт только по user_id, как задумано аналитиком при написании запроса
BЗапрос вернёт ошибку, потому что NATURAL JOIN не поддерживается в PostgreSQL на таблицах
CСоединение произойдёт по столбцу id из обеих таблиц — NATURAL JOIN берёт первый столбец
DСоединение произойдёт по всем одноимённым столбцам: user_id, updated_at и status
Правильный ответ. NATURAL JOIN автоматически соединяет по всем столбцам с одинаковыми именами — здесь по user_id, updated_at и status, что почти наверняка не то, что нужно.

Разбор

NATURAL JOIN находит все пары одноимённых столбцов и использует их как условие ON. Если помимо user_id совпадают updated_at и status, соединение потребует совпадения всех трёх — это резко сократит результат или вернёт пустую таблицу. Добавление нового столбца с тем же именем в любую таблицу молча сломает запрос. Поэтому NATURAL JOIN считается опасным в продакшне.

Проверь себя · 1/3разбор после ответа
Первый набор содержит значения: 100, 100, 100, 200. Второй набор: 100, 300. Чем отличаются результаты EXCEPT и EXCEPT ALL?
Тренировать SQL в Telegram

Ещё вопросы по теме «JOIN и операции множеств»