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

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

Разбор

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

Проверь себя · 1/3разбор после ответа
Вы делаете пагинацию так: SELECT product_id FROM products LIMIT 20 OFFSET 20. В чём главный риск такого подхода для аналитической витрины/интерфейса, если нет ORDER BY?
Тренировать SQL в Telegram

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