Выбор ответа Junior JOIN обновлено

RIGHT JOIN через LEFT

Вопрос

Какой запрос эквивалентен SELECT * FROM a RIGHT JOIN b ON a.id = b.a_id по набору строк?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: SELECT FROM b LEFT JOIN a ON a.id = b.aid. RIGHT JOIN сохраняет все строки правой таблицы.

Варианты ответа

  1. SELECT * FROM b LEFT JOIN a ON a.id = b.a_idправильный ответ
  2. SELECT * FROM a LEFT JOIN b ON a.id = b.a_id
  3. SELECT * FROM a JOIN b ON a.id = b.a_id
  4. SELECT * FROM a FULL JOIN b ON a.id = b.a_id

Разбор

RIGHT JOIN сохраняет все строки правой таблицы. Если поменять таблицы местами и написать LEFT JOIN, сохранятся те же строки b (порядок колонок в SELECT * будет другим, но набор данных тот же). LEFT JOIN без перестановки сохраняет a, INNER теряет b без пары, FULL добавляет лишние строки a без пары.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме