sql >> Base de Datos >  >> RDS >> Mysql

Consulta SQL, solo seleccione si la columna no es nula, de lo contrario no seleccione

Si desea obtener una fila con dos columnas cuando hay dos columnas no nulas, y 1 si solo hay una, debe crear dinámicamente su consulta.

Si desea tener siempre 1 columna donde cada fila contenga un valor no nulo, puede hacerlo con una unión.

SELECT a FROM tbl WHERE a IS NOT NULL AND id = ?
UNION
SELECT b FROM tbl WHERE b IS NOT NULL AND id = ?
UNION
SELECT c FROM tbl WHERE c IS NOT NULL AND id = ?

Si desea saber de qué columnas provienen los valores, puede hacer algo como esto:

SELECT 'col a' AS ColName, a FROM tbl WHERE a IS NOT NULL AND id = ?
UNION
SELECT 'col b', b FROM tbl WHERE b IS NOT NULL AND id = ?
UNION
SELECT 'col c', c FROM tbl WHERE c IS NOT NULL AND id = ?

Nota:la unión también elimina los resultados duplicados. Si desea mantener duplicados, use UNION ALL .