Si la declaración de MySQL devuelve vacío o nulo, entonces establecer en 0.
Usando MySQL (MariaDB)
Estoy buscando ver si una subconsulta devuelve nulo, si es así quiero que sea 0. No puedo lograr que esto funcione.
Los valores en esta declaración deberían devolver NULL (no existen en mi base de datos). ¿Qué estoy haciendo mal?
SELECT
(COALESCE(SELECT z.ID FROM bus_values z WHERE (z.BUS_NUM=35 AND z.WORKER_ID=2922882), 0)) AS BUS_ID,
XVAL,
YVAL,
ZVAL,
DATE_ENTERED
FROM data_points WHERE (WORKER_ID=2922882);
MySQL me está diciendo que tengo un error de sintaxis en la línea (COALESCE(SELECT ...
También he intentado usar IFNULL()
davy.ai
Respuesta
En este escenario, el error de sintaxis se debe a que se coloca la subconsulta dentro de paréntesis sin indicarle a MySQL que es una subconsulta. Para solucionarlo, la subconsulta debe estar encerrada en su propio conjunto de paréntesis antes de agregar la función
COALESCE
.Aquí tienes un ejemplo de cómo debería verse la consulta:
Al encerrar la subconsulta en su propio conjunto de paréntesis, MySQL ahora sabe que es una subconsulta y puede evaluar correctamente la función
COALESCE
.Además, también se podría usar
IFNULL
en lugar deCOALESCE
si la subconsulta estuviera encerrada entre paréntesis.Cualquiera de estas opciones devolvería un valor
0
cuando la subconsulta devuelveNULL
.