Maison > base de données > tutoriel mysql > Comment trouver des lignes distinctes avec des valeurs minimales dans SQL à l'aide de jointures ?

Comment trouver des lignes distinctes avec des valeurs minimales dans SQL à l'aide de jointures ?

DDD
Libérer: 2025-01-24 08:21:09
original
322 Les gens l'ont consulté

How to Find Distinct Rows with Minimum Values in SQL Using Joins?

Optimisation des requêtes SQL : récupération de lignes uniques avec des valeurs minimales

Ce guide démontre une technique SQL efficace pour extraire des lignes uniques contenant la valeur minimale d'une colonne spécifique. Ceci est souvent nécessaire lorsqu'il s'agit de données groupées et nécessite une combinaison de jointures et de filtrage.

Considérez l'exemple de tableau suivant :

<code class="language-sql">id  game   point
1    x      5
1    z      4
2    y      6
3    x      2
3    y      5
3    z      8</code>
Copier après la connexion

L'objectif est de récupérer le id et le point pour chaque game unique, en affichant la valeur point minimale pour ce jeu. L'ensemble de résultats attendu est :

<code class="language-sql">id  game   point
1    z      4
2    y      6
3    x      2</code>
Copier après la connexion

La requête SQL suivante permet d'atteindre cet objectif :

<code class="language-sql">SELECT tbl.*
FROM TableName tbl
INNER JOIN (
    SELECT game, MIN(point) AS min_point
    FROM TableName
    GROUP BY game
) AS tbl1 ON tbl1.game = tbl.game AND tbl1.min_point = tbl.point;</code>
Copier après la connexion

Voici une répartition de la requête :

  • Jointure interne : Cela combine efficacement le TableName (alias tbl) avec les résultats de la sous-requête (alias tbl1).
  • Sous-requête : Ceci calcule le minimum point pour chaque game unique en utilisant MIN(point) et regroupe les résultats par game. Le résultat est un tableau avec game et son minimum correspondant point.
  • Clause ON : La condition de jointure garantit que seules les lignes où les game et point correspondent entre la table principale et la sous-requête sont incluses. Cela sélectionne précisément les lignes avec le minimum point pour chaque game.

Cette requête optimisée évite toute complexité inutile et récupère directement les résultats souhaités. C'est une solution plus concise et souvent plus rapide que les approches alternatives.

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