Lösen Sie das Problem, dass MySQL „not in“ verwendet, um Nullwerte einzuschließen

Lösen Sie das Problem, dass MySQL „not in“ verwendet, um Nullwerte einzuschließen

Beachten! ! !

Wählen Sie * vom Benutzer, wobei die UID nicht in (a, b, c, null) enthalten ist;

Dieses SQL gibt keine Ergebnisse zurück. Vermeiden Sie Nullen in der „Nicht in“-Liste.

Zusätzlich:

– Wenn null an einer arithmetischen Operation teilnimmt, ist der Wert des arithmetischen Ausdrucks null. (Zum Beispiel: +, -, *, / Addition, Subtraktion, Multiplikation und Division)

– Wenn bei der Vergleichsoperation Null vorkommt, kann das Ergebnis als falsch betrachtet werden. (Beispiel: >=,<=,<> größer als, kleiner als, ungleich)

–Wenn bei einer Aggregationsoperation Null vorkommt, wird die Aggregationsfunktion auf Null gesetzt (diese Situation kann durch die Verwendung von Methoden wie isnull(field,0)) vermieden werden. Außer count(*), count(1), count(0) usw. (Zeilen, in denen count(field) null ist, werden nicht gezählt).

--Wenn die Unterabfrage „nicht in“ einen Nullwert enthält, werden keine Daten zurückgegeben.

Ergänzung: MySQL in, nicht in, existiert, existiert nicht und null

Null ist in Daten eine seltsame Sache und im Vergleich auch etwas Besonderes. Im Folgenden werden die Auswirkungen von Null auf die Beurteilungsergebnisse in, nicht in, existiert und nicht existiert aufgezeichnet und zusammengefasst.

Machen wir einige beschreibende Aussagen. Die auf der linken Seite des Vergleichsoperators wird als linker Vergleichsoperator bezeichnet, und die auf der rechten Seite des Vergleichsoperators wird als rechter Vergleichsoperator bezeichnet. Wenn beispielsweise 1 in (1,2) ist, dann ist die 1 auf der linken Seite von in der linke Vergleichsoperator und die (1,2) auf der rechten Seite von in der rechte Vergleichsoperator.

1.in

1.1 Wenn der linke Vergleichsoperator null ist, wird in jedem Fall null zurückgegeben.

mysql> wähle null in (1,2);
+-----------------+
| null in (1,2) |
+-----------------+
| NULL |
+-----------------+
1 Zeile im Satz (0,00 Sek.)

mysql> wähle null in (1,2,null);
+--------------------+
| null in (1,2,null) |
+--------------------+
| NULL |
+--------------------+
1 Zeile im Satz (0,00 Sek.)

1.2 Wenn das rechte Vergleichssymbol null enthält, wird nur dann 1 zurückgegeben, wenn das linke Vergleichssymbol nicht null ist und das rechte Vergleichssymbol das linke Vergleichssymbol enthält. In anderen Fällen wird null zurückgegeben.

mysql> wähle null in (1,2,null);
+--------------------+
| null in (1,2,null) |
+--------------------+
| NULL |
+--------------------+
1 Zeile im Satz (0,00 Sek.)

mysql> wähle 3 in (1,2,null);
+-----------------+
| 3 in (1,2,null) |
+-----------------+
| NULL |
+-----------------+
1 Zeile im Satz (0,00 Sek.)

mysql> wähle 1 in (1,2,null);
+-----------------+
| 1 in (1,2,null) |
+-----------------+
| 1 |
+-----------------+
1 Zeile im Satz (0,00 Sek.)

2. nicht in

2.1 Wenn der linke Vergleichsoperator null ist, wird in jedem Fall null zurückgegeben.

mysql> wähle null, nicht in (1,2,null);
+------------------------+
| null nicht in (1,2,null) |
+------------------------+
| NULL |
+------------------------+
1 Zeile im Satz (0,00 Sek.)

mysql> wähle null, nicht in (1,2);
+---------------------------------+
| null nicht in (1,2) |
+---------------------------------+
| NULL |
+---------------------------------+
1 Zeile im Satz (0,00 Sek.)

2.2 Wenn das rechte Vergleichssymbol null enthält, wird 0 zurückgegeben, wenn das rechte Vergleichssymbol das linke Vergleichssymbol enthält, und in allen anderen Fällen wird null zurückgegeben.

mysql> wähle 1 nicht in (1,2,null);
+---------------------+
| 1 nicht in (1,2,null) |
+---------------------+
| 0 |
+---------------------+
1 Zeile im Satz (0,00 Sek.)

mysql> wähle 1 nicht in (2,3,null); 
+---------------------+
| 1 nicht in (2,3,null) |
+---------------------+
| NULL |
+---------------------+
1 Zeile im Satz (0,00 Sek.)

3.existiert

„Exists“ wird als „true“ ausgewertet, wenn die Unterabfrage null zurückgibt.

mysql> Auswahl vorhanden (Null auswählen);
+----------------------+
| existiert (null auswählen) |
+----------------------+
| 1 |
+----------------------+
1 Zeile im Satz (0,00 Sek.)

4. existiert nicht

Die Unterabfrage „nicht vorhanden“ wird als falsch betrachtet, wenn sie null zurückgibt.

mysql> Auswahl existiert nicht (Auswahl null);
+--------------------------+
| existiert nicht (Null auswählen) |
+--------------------------+
| 0 |
+--------------------------+
1 Zeile im Satz (0,00 Sek.)

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. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur.

Das könnte Sie auch interessieren:
  • Warum sollten MySQL-Felder NOT NULL verwenden?
  • Lösen Sie das Problem, dass bei der Set-Operation kein NULL gefunden wird, nicht wie bei MySQL
  • Detaillierte Erklärung des Unterschieds zwischen MySQL null und nicht null und null und leerem Wert''''''''
  • Detaillierte Erklärung zur Verwendung von NULL und NOT NULL beim Erstellen von Tabellen in MySQL
  • Lösung für das Problem der Nullspalte in der NOT IN-Füllgrube in MySQL
  • Sollten nullbare Felder in MySQL auf NULL oder NOT NULL gesetzt werden?
  • MySQL-Abfrage für leere oder nicht leere Felder (ist null und nicht null)
  • mysql nicht drin, linker Join, IST NULL, EXISTIERT NICHT Effizienzproblem-Datensatz
  • Erläuterung des MySQL-Nicht-Null-Einschränkungsfalls

<<:  Verwenden von Vue3 (Teil 1) Erstellen eines Vue CLI-Projekts

>>:  Detailliertes Tutorial zur Installation von Docker und der Docker-Compose-Suite unter Windows

Artikel empfehlen

Vue implementiert eine kleine Wettervorhersageanwendung

Dies ist eine Website, die ich nachgeahmt habe, a...

CSS3 erzielt einen coolen 3D-Rotationsperspektiveneffekt

CSS3 erreicht coole 3D-Rotationsperspektive 3D-An...

Implementierung des Docker-Buildings für Maven+Tomcat-Basisimages

Vorwort In der Java-Programmierung werden die mei...

Ausnahmefehler beim Packen von Webpack-Dateien

Vor dem Verpacken im Webpack müssen wir sicherste...

Detaillierte Analyse des Explain-Ausführungsplans in MySQL

Vorwort Das Schreiben effizienter SQL-Anweisungen...

Grundlegende Ideen zum Auffinden von Fehlern in der Web-Frontend-Entwicklung

Die WEB-Entwicklung besteht hauptsächlich aus zwe...

Websocket+Vuex implementiert eine Echtzeit-Chat-Software

Inhaltsverzeichnis Vorwort 1. Der Effekt ist wie ...

Vollständiger Schrittbericht der TabBar-Komponente der Vue-Kapselung

Inhaltsverzeichnis Umsetzungsideen: Schritt 1: Ko...

dh Filtersammlung

Der IE hat uns in der frühen Entwicklungsphase Ko...

Hyperlink-Tag für HTML-Webseiten

Lernprogramm zum Hyperlink-Tag einer HTML-Webseit...

CSS3 realisiert den roten Umschlag-Shaking-Effekt

Es besteht die Anforderung, den Schütteleffekt de...