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
Libérer: 2024-12-13 02:47:10
original
363 Les gens l'ont consulté

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
');
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal