«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как вернуть значения по умолчанию при сбое однострочных SQL-запросов?

Как вернуть значения по умолчанию при сбое однострочных SQL-запросов?

Опубликовано 8 ноября 2024 г.
Просматривать:355

How to Return Default Values When Single Row SQL Queries Fail?

Возврат значений по умолчанию при сбое запроса одной строки

При выполнении SQL-запросов для получения определенных данных часто возникают ситуации, когда соответствующая строка отсутствует существует. Чтобы избежать возврата пустых результатов, вы можете указать значение по умолчанию.

Рассмотрим следующий оператор SQL, который извлекает следующий запланированный элемент для потока:

SELECT `file`
FROM `show`, `schedule` 
WHERE `channel` = 1
  AND `start_time` <= UNIX_TIMESTAMP()
  AND `start_time` > UNIX_TIMESTAMP()-1800
  AND `show`.`id` = `schedule`.`file` 
ORDER BY `start_time`
DESC LIMIT 1

Если соответствующая строка не найдена, этот запрос вернет пустой результат. Однако, чтобы гарантировать, что что-то воспроизводится в потоке в случае отсутствия запланированных элементов, вы можете вместо этого вернуть значение по умолчанию.

Один из подходов для достижения этой цели — использование функции IFNULL или COALESCE. Обернув исходный запрос в эти функции, вы можете указать значение по умолчанию, которое будет возвращено, если строка не найдена:

SELECT COALESCE(`file`, 'default.webm')
FROM `show`, `schedule` ...
SELECT IFNULL(`file`, 'default.webm')
FROM `show`, `schedule` ...

Однако эти попытки все равно приведут к пустому результату, если строки не найдены. Чтобы решить эту проблему, более эффективным методом является использование агрегатной функции, такой как MIN, вместе с IFNULL:

SELECT IFNULL(MIN(`file`), 'default.webm') `file` 
  FROM `show`, `schedule` 
 WHERE `channel` = 1 AND `start_time` <= UNIX_TIMESTAMP()
   AND `start_time` > UNIX_TIMESTAMP()-1800 AND `show`.`id` = `schedule`.`file` 
 ORDER BY `start_time` DESC LIMIT 1

Используя агрегатную функцию MIN, вы гарантируете, что получите NULL-результат, если не выбрано ни одной записи. Это значение NULL затем будет заменено значением по умолчанию, предоставленным IFNULL.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3