Devolver valores predeterminados cuando fallan las consultas de una sola fila
Al realizar consultas SQL para recuperar datos específicos, es común encontrar situaciones en las que no hay una fila correspondiente existe. Para evitar devolver resultados vacíos, es posible que desee proporcionar un valor predeterminado.
Considere la siguiente declaración SQL que recupera el siguiente elemento programado para una transmisión:
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
Si no se encuentra ninguna fila coincidente, esta consulta devolverá un resultado vacío. Sin embargo, para garantizar que algo se reproduzca en la transmisión en caso de que no haya elementos programados, puedes devolver un valor predeterminado.
Una forma de lograr esto es usar la función IFNULL o COALESCE. Al incluir la consulta original dentro de estas funciones, puede especificar un valor predeterminado que se devolverá si no se encuentra ninguna fila:
SELECT COALESCE(`file`, 'default.webm')
FROM `show`, `schedule` ...
SELECT IFNULL(`file`, 'default.webm')
FROM `show`, `schedule` ...
Sin embargo, estos intentos seguirán dando como resultado un resultado vacío cuando no se encuentren filas. Para solucionar este problema, una técnica más eficaz es utilizar una función agregada como MIN junto con 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
Al utilizar la función agregada MIN, se asegura de obtener un resultado NULL si no se selecciona ningún registro. Este valor NULL luego será reemplazado por el valor predeterminado proporcionado por IFNULL.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3