Heim  >  Artikel  >  Datenbank  >  Was ist die Verwendung von in in MySQL?

Was ist die Verwendung von in in MySQL?

WBOY
WBOYOriginal
2021-12-21 17:35:1416817Durchsuche

In MySQL wird in mit dem Where-Ausdruck verwendet, um Daten innerhalb eines bestimmten Bereichs abzufragen. Die Syntax lautet „select * from where field in (value)“ oder „select * from where field not in (value)“.

Was ist die Verwendung von in in MySQL?

Die Betriebsumgebung dieses Tutorials: Windows10-System, MySQL8.0.22-Version, Dell G3-Computer.

Was ist die Verwendung von in in MySQL?

1. Grundlegende Verwendung

in in MySQL wird häufig in Where-Ausdrücken verwendet und seine Funktion besteht darin, Daten innerhalb eines bestimmten Bereichs abzufragen.

select * from where field in (value1,value2,value3,…)

Wenn IN der NOT-Operator vorangestellt ist, bedeutet dies die entgegengesetzte Bedeutung zu IN, d unklar , die über eine Unterabfrage erhalten werden kann:

select * from where field not in (value1,value2,value3,…)

In diesem SQL-Beispiel haben wir die Methode implementiert, alle Artikel aller Benutzer zu finden, deren Status 0 ist (möglicherweise gesperrt). Rufen Sie zunächst alle Benutzer mit Status=0 über eine Abfrage ab:

SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=0)

Verwenden Sie dann die Abfrageergebnisse als Listenelemente von IN, um die endgültigen Abfrageergebnisse zu erhalten. Beachten Sie, dass das in der Unterabfrage zurückgegebene Ergebnis ein Feldlistenelement sein muss.

Wir stoßen oft auf das Problem der geringen Abfrageeffizienz in der In-Unterabfrage. Die Lösung lautet wie folgt:

1. Verwenden Sie weiterhin die In-Unterabfrage und fragen Sie noch einmal ab.

SELECT uid FROM user WHERE status=0
. 3 . Ergänzende Anweisungen für den IN-Operator

IN-Listenelemente unterstützen nicht nur Zahlen, sondern auch Zeichen und sogar Zeit- und Datumstypen usw., und diese verschiedenen Arten von Datenelementen können gemischt und angeordnet werden, ohne mit dem Spaltentyp konsistent zu sein:

SELECT * FROM basic_zdjbxx WHERE suiji IN ( SELECT zdcode FROM ( SELECT zdcode FROM basic_h WHERE zdcode != "" ) AS h )
Ein IN kann nur einen Bereichsvergleich für ein Feld durchführen. Wenn Sie mehr Felder angeben möchten, können Sie die logischen Operatoren UND oder ODER verwenden:

SELECT zd.* FROM ( SELECT DISTINCT zdcode FROM basic_h WHERE zdcode != "" ) AS h LEFT JOIN basic_zdjbxx zd ON zd.suiji = h.zdcode
Nach der Verwendung der logischen Operatoren UND oder ODER kann auch IN sein kombiniert mit anderen wie LIKE, >=, = usw. Operatoren werden zusammen verwendet.

4. Bezüglich der Effizienz des IN-Operators

Wenn die Listenelemente von IN sicher sind, können stattdessen mehrere ORs verwendet werden:

SELECT * FROM user WHERE uid IN(1,2,'3','c')
// Das Äquivalent ist:

  SELECT * FROM user WHERE uid IN(1,2) OR username IN('admin','manong')
Es wird allgemein angenommen, dass:

1. Wenn Sie mit Indexfeldern arbeiten, ist die Verwendung von OR effizienter als die von IN. Wenn die Listenelemente jedoch unsicher sind (z. B. sind Unterabfragen erforderlich, um Ergebnisse zu erhalten), müssen Sie den IN-Operator verwenden. Wenn die Daten der Unterabfragetabelle kleiner als die der Hauptabfrage sind, ist außerdem auch der IN-Operator anwendbar.

2. Wenn in oder oder kein Index zum Feld hinzugefügt wird, ist die Abfrageeffizienz von or umso geringer als die von in, je mehr Felder verbunden sind.

【Verwandte Empfehlungen:

MySQL-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist die Verwendung von in in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn