Maison > base de données > tutoriel mysql > Comment trouver la personne la plus âgée de chaque groupe à l'aide de SQL ?

Comment trouver la personne la plus âgée de chaque groupe à l'aide de SQL ?

Mary-Kate Olsen
Libérer: 2025-01-23 22:37:11
original
474 Les gens l'ont consulté

How to Find the Oldest Person in Each Group Using SQL?

Identifier efficacement la personne la plus âgée de chaque groupe à l'aide de SQL

Les requêtes de base de données nécessitent souvent de trouver des valeurs maximales au sein de groupes spécifiques. Cet exemple montre comment identifier la personne la plus âgée de chaque groupe à partir d'un tableau comportant les colonnes person, group et age.

Solution :

Cette approche exploite un LEFT JOIN pour comparer l'âge de chaque personne au sein de son groupe. Les lignes sans correspondance représentent la personne la plus âgée de ce groupe.

Mise en œuvre :

<code class="language-sql">SELECT o.*
FROM Persons o
LEFT JOIN Persons b ON o.Group = b.Group AND o.Age < b.Age
WHERE b.Age IS NULL;</code>
Copier après la connexion

Explication :

  • Persons o : La table Persons est alias o (pour "la plus ancienne").
  • LEFT JOIN Persons b : Un LEFT JOIN est exécuté avec la table Persons alias b (pour "plus grand âge"). Cela rejoint chaque ligne de o avec les lignes du même groupe (o.Group = b.Group) qui ont un âge plus élevé (o.Age < b.Age).
  • WHERE b.Age IS NULL : Cette clause cruciale filtre les résultats. Si une personne dans o n'a aucune correspondance dans b (ce qui signifie que b.Age est NULL), cela signifie que personne dans son groupe n'est plus âgé. Par conséquent, seule la personne la plus âgée de chaque groupe est sélectionnée.

Considérations importantes :

  • L'utilisation d'un INNER JOIN omettrait à tort la personne la plus âgée des groupes ne comptant qu'un seul membre.
  • Cette méthode est une technique très efficace et largement recommandée pour ce type de requête. Des approches similaires sont abordées dans « SQL Antipatterns Volume 1 : Éviter les pièges de la programmation de bases 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!

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