MySQL Select nur Spalten ohne NULL Wert?
Hallo,
ich möchte eine Select * Abfrage machen und mir nur Zeilen anzeigen lassen, die in keiner Spalte einen NULL Wert haben.
Der einfachste Weg wäre jetzt
select * from table where spalte is not null and spalte2 is not null ...
Nun ist mir dies jedoch zu blöd, wenn man 50 Spalten hat
Gibt es einen anderen Weg?
3 Antworten
Bevor Du Dir das antust was Dir zu blöd ist: Auch Dein einfachster Weg bringt Dich nicht ans Ziel. Du würdest nur Sätze bekommen, bei denen alle Spalten null sind. Und solche Sätze wirst wohl kaum haben.
Überlege mal, was der Unterschied zwischen AND und OR ist. Die Datenbank macht immer das, was Du ihr aufträgst, nicht das was Du haben möchtest.
Mit einer Procedure wäre das möglich. Dort baut man dynamisch den SELECT auf mit den Spaltennamen aus den Systemtabellen, welche die Spaltennamen für die Tabellen beinhalten.
Mit reinen SQL ist das nicht möglich, da musst du schon alle Spalten einzeln hinschreiben. Sollte aber auch kein Akt sein. Die Spaltennamen kann man sich anzeigen lassen, mit gängigen Editoren wie Notepad++ gibt es Multiline Editing, so dass man für 50 Zeilen is not null innerhalb von 3 Sekunden anfügen kann.
Ansonsten stellt sich natürlich die Frage wo du den SELECT nutzt. In Programmiersprachen von außerhalb könntest du dir halt erst den Aufbau holen und dies dann ebenso dynamisch aufbauen wie mit einer Datenbankprocedure.
Kannst du erklären, warum die eine solche Abfrage benötigst? Was ist der HIntergrund?