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 Erläuterung des Ausführungsprozesses von MySQL-Abfrageanweisungen

Inhaltsverzeichnis 1. Kommunikationsmethode zwisc...

Eine kurze Analyse zum Festlegen des Anfangswerts des Linux-Roots

Ubuntu erlaubt standardmäßig keine Root-Anmeldung...

Javascript-Grundlagen zu integrierten Objekten

Inhaltsverzeichnis 1. Einführung in integrierte O...

Automatischer Commit-Vorgang für MySQL-Transaktionen

Der Standardbetriebsmodus von MySQL ist der Autoc...

Schritte zum Verpacken und Konfigurieren von SVG-Komponenten in Vue-Projekten

Ich bin erst vor Kurzem in eine neue Firma einges...

Optimierung der Datenbank-SQL-Anweisung

Warum optimieren: Beim Start des eigentlichen Pro...

Zusammenfassung wichtiger Komponenten von MySQL InnoDB

Innodb umfasst die folgenden Komponenten 1. innod...

Reagieren Sie mit Beispielcode zur Implementierung des Anmeldeformulars

Als Vue-Benutzer ist es an der Zeit, React zu erw...

Implementierungsprinzip und Nutzungsanalyse des Apache Bench-Stresstest-Tools

1: Durchsatz (Anfragen pro Sekunde) Eine quantita...

Zusammenfassung des Wissens zu MySQL-Sperren

Sperren in MySQL Sperren sind ein Mittel, um Ress...