Heim >Datenbank >MySQL-Tutorial >Wie behebe ich den MySQL-Fehler „LIMIT & IN/ALL/ANY/SOME Subquery'?
MySQL: Behebung des Fehlers „LIMIT & IN/ALL/ANY/SOME Subquery“
Bei der Verwendung von MySQL kann der Fehler „ Diese Version von MySQL unterstützt die Unterabfrage „LIMIT & IN/ALL/ANY/SOME“ noch nicht. Dieser Fehler tritt normalerweise auf, wenn versucht wird, eine Unterabfrage mit einer LIMIT-Klausel und bestimmten Mengenoperatoren wie IN zu verwenden.
Bedenken Sie den folgenden PHP-Code:
$Last_Video = $db->fetch_all(' SELECT VID, thumb FROM video WHERE VID IN ( SELECT VID FROM video WHERE title LIKE "%'.$Channel['name'].'%quot; ORDER BY viewtime DESC LIMIT 5) ORDER BY RAND() LIMIT 1 ');
Dieser Code versucht, eine abzurufen Zufälliges Video aus einer Reihe von Videos, deren Titel eine bestimmte Zeichenfolge enthält. Allerdings schlagen MySQL-Versionen, die die Syntax „LIMIT & IN/ALL/ANY/SOME Unterabfrage“ nicht unterstützen, mit dem oben genannten Fehler fehl.
Lösung: Ersetzen von IN durch JOIN
Um dieses Problem zu beheben, können Sie den IN-Operator durch eine JOIN-Anweisung ersetzen. Dies kann mit dem folgenden Code erreicht werden:
SELECT v.VID, v.thumb FROM video AS v INNER JOIN (SELECT VID FROM video WHERE title LIKE "%'.$Channel['name'].'%" ORDER BY viewtime DESC LIMIT 5) as v2 ON v.VID = v2.VID ORDER BY RAND() LIMIT 1
In dieser modifizierten Abfrage verwenden wir einen INNER JOIN, um die beiden Tabellen zu verknüpfen und so sicherzustellen, dass nur passende Video-IDs ausgewählt werden. Die JOIN-Operation ersetzt den IN-Operator und ermöglicht die erfolgreiche Ausführung der Abfrage auch auf MySQL-Versionen, die die Unterabfrage „LIMIT & IN/ALL/ANY/SOME“ nicht unterstützen.
Das obige ist der detaillierte Inhalt vonWie behebe ich den MySQL-Fehler „LIMIT & IN/ALL/ANY/SOME Subquery'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!