Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consulta SQL, selecione apenas se a coluna não for nula, caso contrário, não selecione


Se você quiser obter uma linha com duas colunas quando houver duas colunas não nulas e 1 se houver apenas uma, será necessário criar sua consulta dinamicamente.

Se você quiser sempre ter 1 coluna onde cada linha contém um valor não nulo, você pode fazer isso com uma união.
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 = ?

Se você quiser saber de quais colunas os valores vêm, você pode fazer algo assim:
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:a união também remove resultados duplicados. Se você quiser manter duplicatas, use UNION ALL .