Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQL pour renvoyer la liste des champs contenant des données non NULL

Votre objectif est donc d'obtenir la liste des noms de colonnes de sorte que tous aient au moins une valeur non NULL dans l'une des lignes, n'est-ce pas ? Si oui, voir ci-dessous...

Vous ne pouvez pas paramétrer les noms de colonnes dans une requête SQL, vous devrez donc créer votre texte SQL dynamiquement, dans le langage client de votre choix. L'algorithme ressemblerait à ceci :

  1. Vous devrez connaître la liste des noms de colonnes à l'avance. Il existe des moyens d'automatiser la récupération de cette liste dans PostgreSQL , MySQL et la plupart des autres bases de données.
  2. Parcourez cette liste et pour chaque column_name construire dynamiquement le texte SQL tel que :SELECT column_name FROM YOUR_TABLE WHERE column_name IS NOT NULL LIMIT 1 (voir MySQL LIMIT et PostgreSQL LIMIT ).
  3. Exécutez la requête ci-dessus et récupérez le résultat. S'il contient une ligne, ajoutez le column_name à la liste des résultats .
  4. Continuez à itérer tant qu'il y a des éléments dans la liste des noms de colonnes.

La liste résultante contient maintenant des colonnes avec au moins une valeur non NULL.