Maison >base de données >tutoriel mysql >Comment résoudre l'erreur MySQL 1235 : « LIMIT & IN/ALL/ANY/SOME subquery » non pris en charge ?

Comment résoudre l'erreur MySQL 1235 : « LIMIT & IN/ALL/ANY/SOME subquery » non pris en charge ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-13 22:33:10923parcourir

How to Resolve MySQL Error 1235:

Erreur : "Cette version de MySQL ne prend pas encore en charge la sous-requête 'LIMIT & IN/ALL/ANY/SOME'"

Quand En exécutant une requête PHP qui utilise une sous-requête avec une clause LIMIT et un opérateur IN, vous pouvez rencontrer une erreur telle que ceci :

Error during SQL execution: SELECT VID, thumb FROM video WHERE VID IN ( SELECT VID FROM video WHERE title LIKE "%funny%" ORDER BY viewtime DESC LIMIT 5) ORDER BY RAND() LIMIT 1

MySQL Error: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

MySQL Errno: 1235

Cette erreur se produit car certaines versions de MySQL ne prennent pas en charge les sous-requêtes avec une clause LIMIT utilisée conjointement avec les opérateurs IN, ALL, ANY ou SOME.

Solution

Pour résoudre ce problème, pensez à utiliser un JOIN au lieu d'un sous-requête :

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

Cette requête modifiée utilise un INNER JOIN pour combiner les résultats de deux instructions SELECT. La première instruction SELECT récupère le VID des vidéos dont les titres contiennent le nom de chaîne spécifié, en les classant par durée de visionnage par ordre décroissant et en limitant les résultats aux 5 premiers. La deuxième instruction SELECT utilise ensuite cette liste VID pour filtrer l'ensemble de résultats principal, récupérer des colonnes spécifiques de la table vidéo.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn