sql >> Database >  >> RDS >> Mysql

SQL om lijst met velden te retourneren die niet-NULL-gegevens bevatten

Dus uw doel is om de lijst met kolomnamen . te krijgen zodat ze allemaal minstens één niet-NULL-waarde hebben in een van de rijen, toch? Zo ja, zie hieronder...

U kunt namen van kolommen in een SQL-query niet parametriseren, dus u moet uw SQL-tekst dynamisch opbouwen in de clienttaal van uw keuze. Het algoritme ziet er als volgt uit:

  1. Je moet de lijst met kolomnamen van tevoren kennen. Er zijn manieren om het ophalen van deze lijst te automatiseren in PostgreSQL , MySQL en de meeste andere databases.
  2. Herhaal door deze lijst en voor elke column_name dynamisch de SQL-tekst opbouwen zoals:SELECT column_name FROM YOUR_TABLE WHERE column_name IS NOT NULL LIMIT 1 (zie de MySQL LIMIT en PostgreSQL LIMIT ).
  3. Voer de bovenstaande query uit en haal het resultaat op. Als er een rij in staat, voeg dan de column_name . toe naar de resultatenlijst .
  4. Blijf herhalen zolang er elementen in de lijst met kolomnamen staan.

De resulterende lijst bevat nu kolommen met ten minste één niet-NULL-waarde.



  1. Fout bij het bulksgewijs laden van gegevensconversie (afkapping)

  2. Hoe stel ik MySQL tijdelijk in op alleen-lezen via de opdrachtregel?

  3. Hoe voeg ik meerdere waarden tegelijk in een postgres-tabel in?

  4. AbstractMethodError op resultset.getObject