В таблице событий поле updated_at может быть NULL (ещё не обработано). Нужно отсортировать так: сначала обработанные события по свежести обновления, затем необработанные внизу, и при одинаковом updated_at порядок должен быть стабильным по event_id. Какой ORDER BY соответствует этому?

AORDER BY updated_at DESC NULLS FIRST, event_id ASC
BORDER BY updated_at DESC, event_id ASC
CORDER BY updated_at DESC NULLS LAST
DORDER BY updated_at DESC NULLS LAST, event_id ASC
Правильный ответ. Сочетайте NULLS LAST для положения пропусков и второй столбец в ORDER BY для стабильности при совпадениях.

Разбор

Условие «сначала свежие обновления» означает updated_at DESC. Условие «пропуски внизу» означает NULLS LAST. Условие стабильного порядка при одинаковом updated_at означает добавление второго ключа сортировки, например event_id ASC. Без второго ключа порядок строк с одинаковым updated_at может меняться от запроса к запросу. Поэтому корректная сортировка: ORDER BY updated_at DESC NULLS LAST, event_id ASC.

Можно заниматься бесплатно

Готовим вопросы…

Три вопроса по теме этой страницы, с объяснениями.

Продолжить в браузере

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