В таблице заказов поле cancelled_at заполняется только для отменённых заказов, а для активных оно равно NULL. Какой фильтр выберет именно активные (не отменённые) заказы?

AФильтр WHERE cancelled_at IS NULL оставит активные строки без даты отмены
BФильтр WHERE cancelled_at = NULL отберёт строки, где значение поля совпадает с NULL
CФильтр WHERE cancelled_at <> NULL отберёт строки, где значение поля не равно NULL
DФильтр WHERE cancelled_at IS NOT NULL оставит отменённые строки с датой отмены
Правильный ответ. Чтобы отобрать строки с пропуском, используйте IS NULL, а не сравнение через = или <>.

Разбор

Условие cancelled_at IS NULL вернёт TRUE для строк, где поля даты отмены нет, то есть для активных заказов. Сравнения вида = NULL или <> NULL всегда возвращают UNKNOWN, а не TRUE, поэтому такие фильтры дают пустой результат. Фильтр IS NOT NULL, наоборот, оставит только отменённые строки.

Проверь себя · 1/3разбор после ответа
В таблице payments нужно выбрать платежи из России (country = 'RU') со статусом либо 'failed', либо 'chargeback'. Какой WHERE корректный?
Тренировать SQL в Telegram

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