Maison >base de données >tutoriel mysql >Comment corriger l'erreur « LIMIT & IN/ALL/ANY/SOME subquery » de MySQL à l'aide des JOIN ?
Erreur de requête imbriquée MySQL : 'LIMIT & IN/ALL/ANY/SOME sous-requête' non prise en charge
Cette erreur se produit lors de la tentative d'utilisation une sous-requête avec une clause LIMIT dans une clause IN dans MySQL. Pour résoudre ce problème, une approche alternative consiste à utiliser un JOIN :
Code original :
$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 ');
Code refactorisé avec 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
Explication :
L'opération JOIN relie les deux tables (vidéo et v2) en fonction de la colonne VID commune. Cela élimine le besoin d'une requête imbriquée avec une clause LIMIT dans la clause IN, qui n'est pas prise en charge dans la version actuelle de MySQL.
Avantages de JOIN :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!