MySQL Nested Query Error: 'LIMIT & IN/ALL/ANY/SOME subquery' Not Supported
Dieser Fehler tritt beim Versuch der Verwendung auf eine Unterabfrage mit einer LIMIT-Klausel innerhalb einer IN-Klausel in MySQL. Um dieses Problem zu lösen, besteht ein alternativer Ansatz in der Verwendung eines JOIN:
Originalcode:
$Last_Video = $db->fetch_all(' SELECT VID, thumb FROM video WHERE VID IN ( SELECT VID FROM video WHERE title LIKE "%'.$Channel['name'].'%" ORDER BY viewtime DESC LIMIT 5) ORDER BY RAND() LIMIT 1 ');
Refactored Code with JOIN:
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
Erklärung:
Die Die JOIN-Operation verknüpft die beiden Tabellen (Video und v2) basierend auf der gemeinsamen VID-Spalte. Dadurch entfällt die Notwendigkeit der verschachtelten Abfrage mit einer LIMIT-Klausel innerhalb der IN-Klausel, die in der aktuellen MySQL-Version nicht unterstützt wird.
Vorteile von JOIN:
Das obige ist der detaillierte Inhalt vonWie behebe ich den MySQL-Fehler „LIMIT & IN/ALL/ANY/SOME subquery' mithilfe von JOINs?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!