Verschachtelte Verwendung von MySQL ifnullIch habe online gesucht, ob es eine Möglichkeit gibt, ifnull zu verschachteln, aber anscheinend hat niemand diese Verwendung erwähnt: Die meisten prüfen einfach, ob ein Feld leer ist, und ersetzen es dann durch einen anderen Wert. Das heißt: wähle ifnull(a,b) aus A; Das Problem, auf das ich gestoßen bin, besteht darin, dass es zwei Felder gibt und das Szenario wahrscheinlich folgendermaßen aussieht:Jedes Geschäft verfügt über zwei Rabattmethoden: vip_discount und simple_discount, die nach dem in der Datenbank gefundenen Rabattfeld benannt sind; vip_discount ist die wichtigste. Das bedeutet, dass, wenn vip_discount nicht leer ist, sein Wert zurückgegeben wird. Wenn sein Wert leer ist, muss weiter ermittelt werden, ob das Feld simple_discount leer ist. Wenn es nicht leer ist, wird der Wert von simple_discount zurückgegeben, andernfalls wird eine leere Zeichenfolge zurückgegeben. Hier habe ich überlegt, ob ich verschachtelte ifnull nutzen kann um zu ermitteln, ob ich mein Ziel erreichen kann. Nachdem ich lange im Internet gesucht und keine ähnlichen Blogs gefunden hatte, dachte ich, ich könnte es selbst versuchen: Wählen Sie ifnull(vip_discount,ifnull(simple_discount,"")) als Rabatt von A; Damit ist das Problem gelöst. Auf diese SQL-Anweisung können auch bedingte Anweisungen folgen, um andere bedingte Abfragen zu ergänzen. Die Fallstricke von MySQL ifnullSchauen wir uns ohne weitere Umschweife das SQL an: AKTUALISIEREN lb_user u SETZEN Sie u.Benutzerebene = ( WÄHLEN IFNULL(Level-ID, u.Benutzerebene) VON lb_user_level WO `status` = 1 UND levelid > u.user_level UND (Upgrade-Score < u. empirisch ODER Upgrade-Gesamtgeld < u. Gesamtverbrauchsgeld) ORDER BY Ebenen-ID DESC GRENZE 1 ); Auf den ersten Blick scheint diese SQL-Anweisung in Ordnung zu sein und wird erfolgreich ausgeführt. Bei erneuter Ausführung schlägt sie jedoch fehl. Der Grund dafür ist, dass die Daten unter den aktuellen Bedingungen nicht abgerufen werden können und die zurückgegebenen Daten leer sind. Beachten Sie, dass die Daten leer sind, d. h. es sind keine Daten vorhanden, nicht dass die Daten vorhanden sind, sondern dass das Feld leer ist. Nach der Untersuchung wird die SQL-Anweisung wie folgt geändert: AKTUALISIEREN lb_user u SETZEN Sie u.Benutzerebene = IFNULL(( WÄHLEN Ebenen-ID VON lb_user_level WO `status` = 1 UND levelid > u.user_level UND (Upgrade-Score < u. empirisch ODER Upgrade-Gesamtgeld < u. Gesamtverbrauchsgeld) ORDER BY Ebenen-ID DESC GRENZE 1 ), u.Benutzerebene); Nach der Änderung ist die Ausführung erfolgreich und es liegt kein IFNULL-Fehler vor. Zusammenfassend sind die Gründe folgende:In MySQL kann IFNULL nur bestimmen, ob die Daten vorhanden sind und NULL sind, aber nicht, ob die Daten nicht gefunden wurden und NULL sind. Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Das könnte Sie auch interessieren:
|
<<: Einige Fähigkeiten, die Sie beim Erstellen von Webseiten kennen müssen
>>: HTML zeigt Auslassungspunkte hinter dem Text an... implementiert durch Textüberlauf
Nehmen wir ein Beispiel: Der Code ist sehr einfach...
1. Entpacken Sie das Zip-Paket in das Installatio...
Das Datenvolumen ist ein wichtiges Konzept von Do...
#docker ps-Check, alle Ports sind zugeordnet CONT...
Inhaltsverzeichnis So installieren und konfigurie...
Inhaltsverzeichnis Überblick Formularvalidierung ...
Im vorherigen Blog hat Xiao Xiong die Methoden ve...
Inhaltsverzeichnis Legen Sie beim Erstellen einer...
Der <area>-Tag definiert einen Bereich in e...
Es handelt sich im Wesentlichen um ein allgemeine...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis Vorwort Kerncode Datei zeigt e...
In diesem Artikelbeispiel wird der spezifische Co...
Vorwort Derzeit ist das von meiner Firma verwende...
Inhaltsverzeichnis 1.Linux-Anmeldeschnittstelle 2...