SQL高效筛选:获取每个唯一标识符的最小值行
在数据库管理中,经常需要提取具有唯一值及其对应最小值的记录。假设有一个表格包含唯一标识符列和关联值列,目标是从每个唯一标识符中检索最小值对应的行。
挑战
考虑以下表格:
id | game | point |
---|---|---|
1 | x | 5 |
1 | z | 4 |
2 | y | 6 |
3 | x | 2 |
3 | y | 5 |
3 | z | 8 |
目标是找出每个唯一game
值对应的最小point
值的行。预期输出如下:
id | game | point |
---|---|---|
1 | z | 4 |
2 | y | 6 |
3 | x | 2 |
解决方案
可以使用以下SQL查询来实现此目标:
<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>
解释
Id
的最小Point
值,并将结果存储在派生表tbl1
中。Id
列将原始表TableName
与tbl1
连接。Point
值(来自tbl1
)与原始表中Point
值匹配的行。通过使用此查询,您可以高效地检索按game
列分组的具有最小Point
值的唯一行。
以上是如何在 SQL 中检索每个唯一标识符具有最小值的行?的详细内容。更多信息请关注PHP中文网其他相关文章!