Maison >base de données >tutoriel mysql >Vues MySQL et sous-requêtes dans la clause FROM : comment surmonter la limitation 5.0 ?
Sous-requête pour la clause FROM dans les vues MySQL 5.0 : limitations et solutions de contournement
Les utilisateurs de MySQL 5.0 peuvent rencontrer une erreur lorsqu'ils tentent de créer une vue contenant une sous-requête dans la clause FROM. Le message d'erreur est "ERREUR 1349 (HY000) : le SELECT de la vue contient une sous-requête dans la clause FROM." Créez des vues basées sur des requêtes complexes contenant des sous-requêtes.
Une solution de contournement possible consiste à créer des vues distinctes pour chaque sous-requête, puis à remplacer les sous-requêtes par ces vues dérivées. Prenons l'exemple de requête suivant :
<code class="language-sql">SELECT temp.UserName FROM ( SELECT u1.name AS UserName, COUNT(m1.UserFromId) AS SentCount FROM Message m1, User u1 WHERE u1.uid = m1.UserFromId GROUP BY u1.name HAVING SentCount > 3 ) AS temp;</code>
Pour contourner cette limitation, une vue peut être créée pour les deux sous-requêtes :
<code class="language-sql">CREATE VIEW v_user_sent_count AS SELECT u1.name AS UserName, COUNT(m1.UserFromId) AS SentCount FROM Message m1, User u1 WHERE u1.uid = m1.UserFromId GROUP BY u1.name; CREATE VIEW v_users_sent_over_3 AS SELECT UserName FROM v_user_sent_count WHERE SentCount > 3;</code>
Dans la requête d'origine, remplacez la sous-requête par la vue dérivée :
<code class="language-sql">SELECT UserName FROM v_users_sent_over_3;</code>
Cette approche permet de créer des vues basées sur des sous-requêtes complexes dans les versions de MySQL où existent des restrictions de sous-requêtes dans la clause FROM. Cependant, il convient de noter que toutes les sous-requêtes ne peuvent pas être exprimées sans la clause FROM. Par exemple, les sous-requêtes utilisées pour le tri ou le filtrage peuvent nécessiter d'autres méthodes, telles que l'utilisation de sous-requêtes corrélées ou de fonctions de fenêtre.
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!