Heim >Datenbank >MySQL-Tutorial >Verwendung von MySQL IN
MySQL IN-Syntax
Der IN-Operator wird in WHERE-Ausdrücken verwendet, um Mehrfachauswahlen in Form von Listenelementen zu unterstützen. Die Syntax lautet wie folgt:
WHERE column IN (value1,value2,...) WHERE column NOT IN (value1,value2,...)
Wenn IN vorangestellt ist NOT-Operator bedeutet die entgegengesetzte Bedeutung zu IN, d. h. keine Auswahl innerhalb dieser Listenelemente.
IN-Verwendungsbeispiel
Wählen Sie Benutzerdaten mit UID 2, 3 und 5 aus:
SELECT * FROM user WHERE uid IN (2,3,5)
Die zurückgegebenen Abfrageergebnisse lauten wie folgt:
IN-Unterabfrage
Häufiger ist der Wert des IN-Listenelements mehrdeutig und kann über eine Unterabfrage abgerufen werden:
SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=0)
In In dieser SQL Beispielsweise 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 uid FROM user WHERE status=0
Verwenden Sie dann das Abfrageergebnis als Listenelement von IN, um das endgültige Abfrageergebnis zu erhalten. Beachten Sie, dass das in der Unterabfrage zurückgegebene Ergebnis sein muss ein Feld Listenelemente.
Zusätzliche Anweisungen zum IN-Operator
IN-Listenelemente unterstützen nicht nur Zahlen, sondern auch Zeichen und sogar Zeit- und Datumstypen, und diese verschiedenen Arten von Datenelementen können gemischt und angeordnet werden, ohne dass sie befolgt werden müssen Der Spaltentyp muss konsistent sein:
SELECT * FROM user WHERE uid IN(1,2,'3','c')
Ein IN kann nur einen Bereichsvergleich für ein Feld durchführen. Wenn Sie mehrere Felder angeben möchten, können Sie die logischen Operatoren AND oder OR verwenden:
SELECT * FROM user WHERE uid IN(1,2) OR username IN('admin','5idev')
Verwendung Nach den logischen Operatoren AND oder OR kann IN auch mit anderen Operatoren wie LIKE, >=, = usw. verwendet werden.
Über die Effizienz des IN-Operators
Wenn die Listenelemente von IN sicher sind, können stattdessen mehrere ORs verwendet werden:
SELECT * FROM user WHERE uid IN (2,3,5) // 等效为: SELECT * FROM user WHERE (uid=2 OR aid=3 OR aid=5)
Das wird allgemein angenommen Wenn es mit Indexfeldern arbeitet, ist die Verwendung von OR effizienter als die von IN. Wenn die Listenelemente jedoch 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.
Das Obige ist der Inhalt der Verwendung von MySQL IN. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).