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>
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 :
INNER JOIN
omettrait à tort la personne la plus âgée des groupes ne comptant qu'un seul membre.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!