"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment filtrer les données en fonction du nombre dans MySQL sans utiliser Nested SELECT ?

Comment filtrer les données en fonction du nombre dans MySQL sans utiliser Nested SELECT ?

Publié le 2024-11-14
Parcourir:847

How to Filter Data Based on Count in MySQL Without Using Nested SELECT?

MySQL - Utilisation de COUNT(*) dans la clause WHERE

Un utilisateur a rencontré un problème en tentant de filtrer des données dans MySQL à l'aide de la fonction COUNT(*) dans la Clause OÙ. Ils recherchaient une méthode efficace pour accomplir cette tâche sans utiliser d'instruction SELECT imbriquée, car elle peut consommer des ressources importantes.

L'utilisateur a présenté le pseudo-code suivant pour illustrer le résultat souhaité :

SELECT DISTINCT gid
FROM `gd`
WHERE COUNT(*) > 10
ORDER BY lastupdated DESC

Le problème avec cette approche est que MySQL ne prend pas en charge les fonctions d'agrégation, telles que COUNT(*), dans la clause WHERE. Pour contourner cette limitation, l'utilisateur a exploré la possibilité d'utiliser un SELECT imbriqué pour compter le nombre de lignes pour chaque gid unique, puis filtrer les résultats en conséquence. Cependant, cette méthode a été jugée inefficace et gourmande en ressources.

Heureusement, MySQL propose une solution plus optimisée en utilisant les clauses GROUP BY et HAVING :

SELECT gid
FROM `gd`
GROUP BY gid 
HAVING COUNT(*) > 10
ORDER BY lastupdated DESC

Cette requête effectue les étapes suivantes :

  1. Regroupe les lignes de la table gd par colonne gid.
  2. Calcule le nombre de lignes pour chaque groupe gid à l'aide de la fonction COUNT(*).
  3. Utilise la clause HAVING pour filtrer les résultats et renvoyer uniquement les groupes dont le nombre est supérieur à 10.
  4. Trie le résultat final par ordre décroissant en fonction de la dernière colonne mise à jour.

En tirant parti des clauses GROUP BY et HAVING, cette approche permet d'obtenir efficacement le résultat souhaité sans recourir à un Instruction SELECT imbriquée, ce qui entraîne des performances et une efficacité améliorées.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3