Maison > base de données > tutoriel mysql > Comment rechercher efficacement des enregistrements avec la valeur la plus élevée ou la plus basse par groupe à l'aide d'une jointure externe gauche ?

Comment rechercher efficacement des enregistrements avec la valeur la plus élevée ou la plus basse par groupe à l'aide d'une jointure externe gauche ?

DDD
Libérer: 2024-12-06 19:50:13
original
865 Les gens l'ont consulté

How to Efficiently Find Records with the Highest or Lowest Value Per Group Using a Left Outer Join?

Obtenez les enregistrements avec la valeur la plus élevée/la plus petite par groupe à l'aide d'une jointure efficace

Tout en utilisant les classements pour rechercher les enregistrements avec la valeur la plus élevée ou la plus petite par groupe est possible, une approche plus efficace et plus simple consiste à utiliser une jointure externe gauche.

Exemple pour le plus haut Valeur :

Pour récupérer l'enregistrement avec le OrderField le plus élevé par groupe, suivez ces étapes :

  1. Rejoignez la table avec elle-même à condition que le OrderField de l'enregistrement cible soit inférieur que le OrderField de l'enregistrement externe :
SELECT t1.*
FROM `Table` AS t1
LEFT OUTER JOIN `Table` AS t2
  ON t1.GroupId = t2.GroupId AND t1.OrderField < t2.OrderField
Copier après la connexion
  1. Vérifiez les valeurs nulles dans le joint colonnes. Si la jointure renvoie null, cela signifie qu'il n'y a aucun enregistrement avec un OrderField plus élevé, indiquant que t1 a la valeur la plus élevée.

Considérations supplémentaires :

  • Si plusieurs enregistrements ont le même OrderField le plus élevé, la requête les renverra tous. Pour garantir qu'un seul enregistrement est renvoyé, d'autres conditions peuvent être ajoutées.
  • Une indexation appropriée sur les colonnes GroupId et OrderField est cruciale pour des performances optimales.

Évitement des classements et Sous-requêtes :

L'utilisation d'une jointure externe gauche élimine le besoin de rangs et de sous-requêtes, ce qui conduit à performances améliorées. Comme démontré précédemment, la méthode de jointure surpasse considérablement les approches basées sur des sous-requêtes.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal