2016-05-16 12 views
2

Was ist eine gute Möglichkeit, Datensätze mit einem Nullwert in einer Reihe von Spalten zu finden? Etwas wiemysql Abfrage für einen Wert über mehrere Spalten

"Select all rows where null IN(col6, col7, col8, col9, col10)" 

Muss ich Vergleiche für jede Spalte machen?

+0

Was ist das erwartete Ergebnis, wenn (i) eine Spalte nicht null ist (ii) alle Spalten null sind? –

Antwort

2
where greatest(col6, col7, col8, col9, col10) is null 
+0

Clever und effektiv. Dies scheint die Tatsache auszunutzen, dass NULL nicht größer oder kleiner als ein tatsächlicher Wert ist, so dass es jedes Mal an die Spitze kommt. – tadman

+0

Schön. Ich habe mich gefragt, warum 'NULL' immer der Größte war(). Scheint so zu funktionieren, wie ich es möchte: http://sqlfiddle.com/#!9/eb642c/3 – doub1ejack

+0

NULL ist nicht der Größte. Das Ergebnis ist nur undefiniert, wenn ein Parameter NULL ist. Wenn das Ergebnis nicht definiert ist, wird NULL (kein Wert) zurückgegeben. CONCAT() würde auch funktionieren. Und wahrscheinlich einige andere Funktionen mit flexibler Anzahl von Parametern. –

0

Nicht ganz elegant, aber auch nicht die db-Struktur, mit der Sie arbeiten müssen.

Select all rows where col6 is null or col7 is null or col8 is null or coll9 is null or ...