Что сделает запрос INSERT INTO archive (order_id, amount, status) SELECT order_id, amount, status FROM orders WHERE status = 'completed'?

AЗапрос вставит в archive только те столбцы из orders, которые совпадают по имени, без применения фильтра WHERE
BЗапрос вызовет ошибку, потому что INSERT INTO и SELECT нельзя комбинировать в одной инструкции INSERT INTO ... SELECT
CЗапрос вставит в archive только заказы со статусом 'completed' из таблицы orders в указанные столбцы
DЗапрос скопирует все строки из orders в archive без применения условия WHERE status = 'completed' к источнику
Правильный ответ. INSERT INTO ... SELECT копирует результат запроса SELECT в указанную таблицу.

Разбор

Конструкция INSERT INTO ... SELECT берёт результат выборки и вставляет его в целевую таблицу. Здесь SELECT фильтрует заказы со статусом 'completed' и выбирает три столбца. Эти строки вставляются в таблицу archive в указанные столбцы. Условие WHERE применяется к исходным данным, поэтому копируются не все заказы, а только завершённые.

Проверь себя · 1/3разбор после ответа
В таблице support_tickets поле resolved_at равно NULL, если тикет ещё не решён. Нужно вывести сначала нерешённые тикеты, а внутри них — по created_at по возрастанию (самые старые сверху). Какой ORDER BY подойдёт лучше всего?
Тренировать SQL в Telegram

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