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

Beispielcode mit Vue-Router in HTML

Einführung in Vue und Vue-Router <script src=&...

Installieren Sie zwei MySQL5.6.35-Datenbanken unter Win10

Notieren Sie die Installation von zwei MySQL5.6.3...

Vier Möglichkeiten zum Vergleichen von JavaScript-Objekten

Inhaltsverzeichnis Vorwort Referenzvergleich Manu...

Fallanalyse mehrerer MySQL-Aktualisierungsvorgänge

Inhaltsverzeichnis Fallstudie Kontostand aktualis...

Javascript zum Erzielen eines Trommeleffekts

In diesem Artikel wird der spezifische Code von J...

vue+echarts realisiert den Flusseffekt der China-Karte (detaillierte Schritte)

@vue+echarts realisiert den Flusseffekt der China...

Erläuterung synthetischer React-Ereignisse

Inhaltsverzeichnis Klicken Sie zunächst auf das E...

Javascript um den Drag-Effekt der Login-Box zu erreichen

In diesem Artikel wird der spezifische Code von J...

Verwendung des Linux-Befehls ln

1. Befehlseinführung Mit dem Befehl ln werden Lin...

Detaillierte Erläuterung der Transaktionsisolierungsebenen der MySQL-Datenbank

Isolationsebene für Datenbanktransaktionen Es gib...