Lorsque vous traitez des bases de données SQL, vous devez souvent récupérer les n premières valeurs maximales d'une table. Cela peut être particulièrement utile pour trouver les catégories les plus fréquentes ou les produits les plus performants.
Dans MySQL, l'approche de base pour sélectionner la valeur maximale dans une table consiste à regrouper les colonnes et à identifier la valeur la plus élevée dans chacune d'elles. groupe. Cependant, pour sélectionner les n premières valeurs maximales, une approche différente est nécessaire.
Une méthode pour sélectionner les n premières valeurs maximales d'une table consiste à combiner deux requêtes UNION. La première requête identifie la valeur maximale pour chaque groupe, tandis que la deuxième requête sélectionne les valeurs les plus élevées suivantes pour chaque groupe, à l'exclusion des valeurs maximales initialement identifiées.
SELECT max(column1) m FROM table t GROUP BY column2 UNION SELECT max(column1) m FROM table t WHERE column1 NOT IN (SELECT max(column1) WHERE column2 = t.column2)
Cette approche peut être personnalisée pour récupérer n'importe quel nombre de valeurs maximales supérieures en ajustant la clause LIMIT dans la deuxième requête. Par exemple, pour sélectionner les 2 premières valeurs maximales, la clause LIMIT serait "LIMIT 2,1".
Une autre méthode pour sélectionner les n premières valeurs maximales d'une table MySQL consiste à simuler le classement sur la partition. Cette technique implique une sous-requête complexe qui attribue un rang à chaque valeur au sein d'un groupe. Les résultats peuvent ensuite être filtrés pour récupérer les n premières valeurs.
Voici un exemple de requête qui utilise cette approche :
SELECT t.* FROM (SELECT grouper, (SELECT val FROM table li WHERE li.grouper = dlo.grouper ORDER BY li.grouper, li.val DESC LIMIT 2,1) AS mid FROM ( SELECT DISTINCT grouper FROM table ) dlo ) lo, table t WHERE t.grouper = lo.grouper AND t.val > lo.mid
Cette technique est légèrement plus complexe mais peut être utilisée pour sélectionner les n premières valeurs maximales pour n'importe quelle colonne du tableau.
Lors de la mise en œuvre de l'une ou l'autre de ces approches, il est important de prendre en compte la distribution des données et le nombre de valeurs maximales supérieures nécessaires. La sélection d'un grand nombre de valeurs maximales maximales peut avoir un impact significatif sur les performances dans de grands ensembles de données.
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!