Первый SELECT возвращает два столбца name, email, а второй — три столбца name, email, phone. Что произойдёт при SELECT name, email FROM users UNION ALL SELECT name, email, phone FROM contacts?

AЗапрос вернёт ошибку: для UNION ALL количество и типы столбцов в обоих SELECT должны совпадать, иначе совместить наборы нельзя
BЗапрос выполнится успешно: лишние столбцы второго SELECT будут автоматически обрезаны до количества столбцов первого запроса
CЗапрос выполнится успешно: недостающие столбцы первого SELECT будут заполнены значением NULL для совместимости со вторым
DЗапрос объединит все столбцы из обоих SELECT в один широкий результат, добавив отсутствующие как NULL в каждой строке
Правильный ответ. Для UNION и UNION ALL число и типы столбцов должны совпадать во всех объединяемых запросах, иначе будет ошибка.

Разбор

SQL требует одинаковое количество столбцов с совместимыми типами во всех частях UNION. Если первый SELECT возвращает 2 столбца, а второй — 3, запрос завершится ошибкой и автоматического дополнения или обрезки не произойдёт. Чтобы это исправить, нужно либо убрать лишний столбец из второго запроса, либо добавить NULL AS phone в первый.

Проверь себя · 1/3разбор после ответа
В таблице users адрес электронной почты хранится в разном регистре: Anna@mail.ru, anna@MAIL.ru и т.д. Как надёжнее всего найти все записи с конкретным адресом вне зависимости от регистра?
Тренировать SQL в Telegram

Ещё вопросы по теме «Основы SQL-запросов»