首页 >数据库 >mysql教程 >如何在 SQL 中检索每个唯一标识符具有最小值的行?

如何在 SQL 中检索每个唯一标识符具有最小值的行?

DDD
DDD原创
2025-01-24 08:01:12158浏览

How to Retrieve Rows with Minimum Values for Each Unique Identifier in SQL?

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列将原始表TableNametbl1连接。
  • 最后,它过滤结果,只包含最小Point值(来自tbl1)与原始表中Point值匹配的行。

通过使用此查询,您可以高效地检索按game列分组的具有最小Point值的唯一行。

以上是如何在 SQL 中检索每个唯一标识符具有最小值的行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn