Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL, um eine Liste von Feldern zurückzugeben, die Nicht-NULL-Daten enthalten

Ihr Ziel ist es also, die Liste der Spaltennamen zu erhalten so dass alle mindestens einen Nicht-NULL-Wert in einer der Zeilen haben, richtig? Wenn ja, siehe unten...

Sie können Spaltennamen in einer SQL-Abfrage nicht parametrisieren, daher müssen Sie Ihren SQL-Text dynamisch in der Clientsprache Ihrer Wahl erstellen. Der Algorithmus würde wie folgt aussehen:

  1. Sie müssen die Liste der Spaltennamen im Voraus kennen. Es gibt Möglichkeiten, das Abrufen dieser Liste in PostgreSQL zu automatisieren , MySQL und die meisten anderen Datenbanken.
  2. Durchlaufen Sie diese Liste und für jeden column_name Erstellen Sie dynamisch den SQL-Text wie:SELECT column_name FROM YOUR_TABLE WHERE column_name IS NOT NULL LIMIT 1 (siehe das MySQL LIMIT und PostgreSQL LIMIT ).
  3. Führen Sie die obige Abfrage aus und rufen Sie das Ergebnis ab. Wenn es eine Zeile enthält, fügen Sie den column_name hinzu zur Ergebnisliste .
  4. Iterieren Sie weiter, solange Elemente in der Spaltennamensliste vorhanden sind.

Die Ergebnisliste enthält nun Spalten mit mindestens einem Nicht-NULL-Wert.