Таблица notifications содержит поле status, в котором значения: 'sent', 'delivered', 'read'. Какой из запросов корректен? select * from notifications where status like '%sent%' order by created_at desc limit 5 select * from notifications where status = 'read' order by created_at desc limit 5 select * from notifications order by status desc limit 5 select * from notifications where status not in ('sent', 'delivered') order by created_at asc limit 5 select * from notifications where status in ('sent', 'delivered') order by created_at desc limit 5
Ответ от нейросети
sobes.tech AI
Корректными запросами являются те, которые логично и корректно фильтруют или сортируют данные по полю status, учитывая возможные значения 'sent', 'delivered', 'read'. Рассмотрим каждый запрос:
-
select * from notifications where status like '%sent%' order by created_at desc limit 5- Использование
like '%sent%'избыточно и потенциально некорректно, так какstatusпринимает строго одно из трёх значений. Лучше использоватьstatus = 'sent'.
- Использование
-
select * from notifications where status = 'read' order by created_at desc limit 5- Корректный запрос, фильтрует по статусу 'read', сортирует по дате создания по убыванию, ограничивает 5 записей.
-
select * from notifications order by status desc limit 5- Технически корректный запрос, но сортировка по статусу может быть неинформативной, так как значения строковые и фиксированные.
-
select * from notifications where status not in ('sent', 'delivered') order by created_at asc limit 5- Корректный запрос, выбирает записи со статусом, отличным от 'sent' и 'delivered', то есть 'read'.
-
select * from notifications where status in ('sent', 'delivered') order by created_at desc limit 5- Корректный запрос, выбирает записи со статусом 'sent' или 'delivered'.
Итог: запросы 2, 4 и 5 корректны и логичны. Запрос 1 лучше переписать с использованием = вместо like. Запрос 3 корректен синтаксически, но не всегда полезен.