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

Detaillierte Konfiguration von Nginx, das sowohl Http als auch Https unterstützt

Heutzutage gehört die Unterstützung von HTTPS für...

CSS zur Realisierung der Einzelauswahl-Faltmenüfunktion

Führen Sie kein Front-End-UI-Framework ein, es se...

MySQL-Import- und Export-Sicherungsdetails

Inhaltsverzeichnis 1. Detaillierte Erklärung der ...

js-Methode zur Realisierung der Warenkorbberechnung

In diesem Artikelbeispiel wird der spezifische Co...

Benutzerdefiniertes Auswahlfeld für die Webseite Auswählen

Jeder ist wahrscheinlich mit dem Auswahl-Dropdown...

Docker-Bereitstellung von Implementierungsschritten für Flask-Anwendungen

1. Zweck Schreiben Sie lokal eine Flask-Anwendung...

Tipps zum Erstellen von Webseiten für Mobiltelefone

Angesichts der Tatsache, dass mittlerweile viele M...

So installieren Sie MySQL Community Server 5.6.39

Dieser Artikel enthält das ausführliche Tutorial ...

So richten Sie die Verwendung der chinesischen Eingabemethode in Ubuntu 18.04 ein

In der neuesten Version von Ubuntu müssen Benutze...

Detaillierte Untersuchung der MySQL-Mehrversions-Parallelitätskontrolle MVCC

MVCC MVCC (Multi-Version Concurrency Control) ist...

innerHTML-Anwendung

Blanks Blog: http://www.planabc.net/ Die Verwendu...