Filtrage efficace SQL : obtenez la ligne de valeur minimale pour chaque identifiant unique
Dans la gestion de bases de données, il est souvent nécessaire d'extraire des enregistrements avec des valeurs uniques et leurs valeurs minimales correspondantes. Supposons qu'il existe une table contenant une colonne d'identifiant unique et une colonne de valeur associée, et que l'objectif est de récupérer la ligne correspondant à la valeur minimale de chaque identifiant unique.
Défi
Considérez la forme suivante :
id | game | point |
---|---|---|
1 | x | 5 |
1 | z | 4 |
2 | y | 6 |
3 | x | 2 |
3 | y | 5 |
3 | z | 8 |
Le but est de trouver la ligne avec la plus petite game
valeur pour chaque valeur point
unique. Le résultat attendu est le suivant :
id | game | point |
---|---|---|
1 | z | 4 |
2 | y | 6 |
3 | x | 2 |
Solution
Cela peut être réalisé en utilisant la requête SQL suivante :
<code class="language-sql">SELECT tbl.* FROM TableName tbl INNER JOIN ( SELECT Id, MIN(Point) AS MinPoint FROM TableName GROUP BY Id ) tbl1 ON tbl1.id = tbl.id WHERE tbl1.MinPoint = tbl.Point;</code>
Explication
Id
minimale pour chaque Point
unique et stocke les résultats dans la table dérivée tbl1
. Id
avec TableName
en fonction d'une colonne tbl1
commune. Point
(de tbl1
) correspond à la valeur Point
dans le tableau d'origine. En utilisant cette requête, vous pouvez récupérer efficacement les lignes uniques avec la plus petite valeur game
regroupées par la colonne Point
.
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!