Mysql
 sql >> Database >  >> RDS >> Mysql

Query SQL, seleziona solo se la colonna non è nulla altrimenti non seleziona

Se vuoi ottenere una riga con due colonne quando ci sono due colonne non nulle e 1 se ce n'è solo una, devi creare dinamicamente la tua query.

Se vuoi avere sempre 1 colonna in cui ogni riga contiene un valore non nullo, puoi farlo con un'unione.

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 vuoi sapere da quali colonne provengono i valori, puoi fare qualcosa del genere:

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:l'unione rimuove anche i risultati duplicati. Se vuoi conservare i duplicati, usa UNION ALL .