Maison >base de données >tutoriel mysql >Comment corriger l'erreur « LIMIT & IN/ALL/ANY/SOME Subquery » de MySQL ?

Comment corriger l'erreur « LIMIT & IN/ALL/ANY/SOME Subquery » de MySQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-13 02:47:10301parcourir

How to Fix MySQL's

MySQL : Correction de l'erreur « LIMIT & IN/ALL/ANY/SOME Subquery »

Lors de l'utilisation de MySQL, vous pouvez rencontrer l'erreur " Cette version de MySQL ne prend pas encore en charge la sous-requête 'LIMIT & IN/ALL/ANY/SOME'". Cette erreur se produit généralement lorsque vous tentez d'utiliser une sous-requête avec une clause LIMIT et certains opérateurs d'ensemble, tels que IN.

Considérez le code PHP suivant :

$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
');

Ce code tente de récupérer un vidéo aléatoire à partir d’un ensemble de vidéos contenant une chaîne spécifique dans leur titre. Cependant, les versions MySQL qui ne prennent pas en charge la syntaxe « LIMIT & IN/ALL/ANY/SOME subquery » échoueront avec l'erreur susmentionnée.

Solution : remplacer IN par JOIN

Pour résoudre ce problème, vous pouvez remplacer l'opérateur IN par une instruction JOIN. Cela peut être réalisé en utilisant le code suivant :

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

Dans cette requête modifiée, nous utilisons un INNER JOIN pour lier les deux tables, en garantissant que seuls les ID vidéo correspondants sont sélectionnés. L'opération JOIN remplace l'opérateur IN, permettant à la requête de s'exécuter avec succès même sur les versions de MySQL qui ne prennent pas en charge la sous-requête "LIMIT & IN/ALL/ANY/SOME".

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