Heim  >  Artikel  >  Datenbank  >  So verwenden Sie eine Abfrage in MySQL

So verwenden Sie eine Abfrage in MySQL

WBOY
WBOYOriginal
2022-01-12 10:02:0613083Durchsuche

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.

So verwenden Sie eine Abfrage in MySQL

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!

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