Ich habe Tabelle A, die mit Tabelle B "VERWENDUNG" Spalte_1 verbunden ist. Ich mag, dass die Abfrage alle Zeilen in der Tabelle A zeigen, wo der Wert in column_2 nicht in Tabelle BHandhabung von NULL bei Verwendung des NOT EQUAL-Operators
So alle Werte in column_2, column_3 oder column_4 der verbundenen Reihe ist gleich, ich versuchte, mit:
Nun, wenn jede Zelle in B.column_2, B.column_3 und B.column_4 einen Wert enthält, funktioniert die Abfrageprüfung und es werden alle Zeilen in Tabelle A aufgelistet, wo der Wert in A.column_2 nein hat Übereinstimmung in Tabelle B.
Das Problem tritt auf, wenn einige der Zellen in Tabelle B einen NULL-Wert haben. Dann werden keine Ergebnisse zurückgegeben. Dies scheint zu sein, weil MySQL die folgende Auffassung FALSCH sein:
23 <> NULL
... Und da die Abfrage für Fälle ist, wo alle Prüfungen TRUE zurück, es gibt nichts zurück.
Das Folgende ist eine Behelfslösung, dass ich, indem die Tabelle B-Säulen eingesetzt umschlungen mit einem IFNULL, wo der IFNULL Wert 0 ist im Wesentlichen diese konvertiert alle jene NULL Zellen auf 0 ... und damit die UNGLEICH Check gibt TRUE korrekt zurück, wenn keine Übereinstimmungen vorhanden sind und diese Zeilen in Tabelle A angezeigt werden. Der Code ist wie folgt:
WHERE
A.column_2 <> IFNULL(B.column_2, 0) AND
A.column_2 <> IFNULL(B.column_3, 0) AND
A.column_2 <> IFNULL(B.column_4, 0)
Dies scheint eine runde Sache zu sein, damit umzugehen. Gibt es einen besseren Weg, damit umzugehen?
Sie coalesce Funktion –
@Jordan IFNULL verwenden können() ist so ziemlich das gleiche wie coalesce(), um nur begrenzt auf 1 Wert. – Shadow