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

SQL per restituire un elenco di campi contenenti dati non NULL

Quindi il tuo obiettivo è ottenere l'elenco dei nomi delle colonne in modo tale che tutti abbiano almeno un valore non NULL in una qualsiasi delle righe, giusto? Se è così, vedi sotto...

Non puoi parametrizzare i nomi delle colonne in una query SQL, quindi dovrai creare il tuo testo SQL in modo dinamico, nella lingua client di tua scelta. L'algoritmo sarebbe simile a questo:

  1. Dovrai conoscere in anticipo l'elenco dei nomi delle colonne. Esistono modi per automatizzare il recupero di questo elenco in PostgreSQL , MySQL e la maggior parte degli altri database.
  2. Esplora questo elenco e per ogni column_name crea dinamicamente il testo SQL come:SELECT column_name FROM YOUR_TABLE WHERE column_name IS NOT NULL LIMIT 1 (vedi MySQL LIMIT e PostgreSQL LIMIT ).
  3. Esegui la query sopra e recupera il risultato. Se contiene una riga, aggiungi il column_name all'elenco dei risultati .
  4. Continua a scorrere finché sono presenti elementi nell'elenco dei nomi delle colonne.

L'elenco risultante ora contiene colonne con almeno un valore diverso da NULL.