Heim >Datenbank >MySQL-Tutorial >So verwenden Sie eine Abfrage in MySQL
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)
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 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. 3. IN Ergänzende Anweisungen für Operatoren
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!