In MySQL wird „in“ häufig in Where-Ausdrücken verwendet, um Daten innerhalb eines bestimmten Bereichs abzufragen. Die Syntax lautet „select*from where field in(value1,value2,..)“. bedeutet, dass im Gegensatz zu in innerhalb dieser Listenelemente keine Auswahl vorgenommen wird.
Die Betriebsumgebung dieses Tutorials: Windows10-System, MySQL8.0.22-Version, Dell G3-Computer.
So verwenden Sie in-Abfragen in MySQL
1. Grundlegende Verwendung
In MySQL wird in 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 item ist Es ist unklar, kann aber über eine Unterabfrage abgerufen werden:
select * from where field not in (value1,value2,value3,…)
In diesem SQL-Beispiel implementieren wir die Methode zum Finden aller Artikel aller Benutzer mit dem Status 0 (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)
Wir stoßen häufig 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
IN-Listenelemente unterstützen nicht nur Zahlen, sondern auch Zeichen und sogar Zeit- und Datumstypen. Diese verschiedenen Arten von Datenelementen können gemischt und angeordnet werden, ohne mit dem Spaltentyp übereinzustimmen:
SELECT * FROM basic_zdjbxx WHERE suiji IN ( SELECT zdcode FROM ( SELECT zdcode FROM basic_h WHERE zdcode != "" ) AS h )
Eins IN kann nur einen Bereichsvergleich für ein Feld durchführen. Wenn Sie mehr Felder angeben möchten, können Sie die logischen Operatoren AND oder OR 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 AND oder OR kann IN auch mit anderen kombiniert werden, z B. 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')
Allgemein angenommen:
1 OR ist effizienter als IN, aber wenn die Listenelemente unsicher sind (z. B. wenn Unterabfrageergebnisse benötigt werden), muss der IN-Operator verwendet werden. Wenn die Daten der Unterabfragetabelle kleiner als die der Hauptabfrage sind, ist außerdem auch der IN-Operator anwendbar.
In oder, wenn das Feld nicht indiziert ist, je mehr Felder verbunden sind (1 oder 2 oder 3 oder 4 oder ...), ist die Abfrageeffizienz von oder viel geringer als die von inEmpfohlenes Lernen:
MySQL Video-Tutorial
Das obige ist der detaillierte Inhalt vonSo verwenden Sie eine Abfrage in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!