Maison  >  Article  >  base de données  >  Puis-je restreindre les clauses WHERE à des champs spécifiques dans MySQL ?

Puis-je restreindre les clauses WHERE à des champs spécifiques dans MySQL ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-05 18:17:02879parcourir

Can I Restrict WHERE Clauses to Specific Fields in MySQL?

Les clauses WHERE peuvent-elles être limitées à un champ spécifique dans MySQL ?

Dans MySQL, la clause WHERE filtre les lignes en fonction de conditions spécifiées. Cependant, il n'est pas possible de limiter l'application d'une clause WHERE à un champ spécifique au sein d'une requête.

Comprendre le problème

Dans le contexte de la question, le L'objectif est d'afficher une liste des cours disponibles et le statut d'inscription de l'utilisateur associé. Chaque ligne représente un cours et affiche le statut d'inscription (userHabilitado) pour un utilisateur particulier. Cependant, l'ID utilisateur de l'utilisateur doit être extrait de l'URL et utilisé pour filtrer les résultats pour cet utilisateur spécifique.

Solution : exploiter le groupe non complet par

Avant MySQL 5.7, MySQL autorisait le regroupement non complet, ce qui signifiait que les fonctions d'agrégation telles que group_concat pouvaient être utilisées avec des colonnes non agrégées (NON AGGS). Cependant, à partir de MySQL 5.7, le paramètre ONLY_FULL_GROUP_BY est activé par défaut, interdisant de telles requêtes.

Dans ce cas, la requête tente d'ajouter userHabilitado à la liste des colonnes affichées, qui sont déjà regroupées par cursos. .cursoID. Cependant, la valeur userHabilitado affichée n'est pas filtrée par une clause WHERE et affiche donc la première valeur trouvée pour cet utilisateur, quel que soit le cours.

Solution de contournement : désactivation du groupe non complet par

Une solution de contournement consiste à désactiver ONLY_FULL_GROUP_BY pour la requête spécifique en utilisant le modificateur SQL_CALC_FOUND_ROWS :

<code class="sql">SET SQL_CALC_FOUND_ROWS = 0;</code>

Cependant, cela n'est pas recommandé car cela peut introduire des écarts potentiels dans les résultats et doit être utilisé avec prudence.

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