Heim > Datenbank > MySQL-Tutorial > Wie behebe ich den MySQL-Fehler „LIMIT & IN/ALL/ANY/SOME Subquery'?

Wie behebe ich den MySQL-Fehler „LIMIT & IN/ALL/ANY/SOME Subquery'?

Mary-Kate Olsen
Freigeben: 2024-12-13 02:47:10
Original
296 Leute haben es durchsucht

How to Fix MySQL's

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
');
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage