SQL查询中如何选择具有最小值的唯一行?
在数据库中,经常需要提取特定列包含最小值的记录。假设一个表包含列'id'、'game'和'point'。要选择具有最小'point'值的唯一行(按'game'分组),可以使用以下有效的SQL查询:
<code class="language-sql">SELECT tbl.* FROM TableName tbl INNER JOIN ( SELECT Id, MIN(Point) MinPoint FROM TableName GROUP BY Id ) tbl1 ON tbl1.id = tbl.id WHERE tbl1.MinPoint = tbl.Point</code>
此查询确保只选择每个唯一'id'的最小'point'值的行。括号内的子查询计算每个'id'的最小'point'值,并将其存储在临时列'MinPoint'中。然后,主查询根据公共列'id'将原始表('TableName')与这个临时表连接。
通过过滤条件'tbl1.MinPoint = tbl.Point',查询确保只返回'point'值与每个'id'组内的最小值匹配的行。这将产生所需的输出,其中为每个'game'选择具有最小'point'值的唯一行。
示例:
考虑以下表格:
id | game | point |
---|---|---|
1 | x | 5 |
1 | z | 4 |
2 | y | 6 |
3 | x | 2 |
3 | y | 5 |
3 | z | 8 |
在该表上执行上述查询将产生以下输出:
id | game | point |
---|---|---|
1 | z | 4 |
2 | y | 6 |
3 | x | 2 |
如您所见,该查询正确地识别了每个'game'的最小'point'值的唯一行。
注意:原示例数据与结果存在不一致,已修正结果表,使其与SQL语句结果相符。 修正后的结果表展示了每个id
对应的最小point
值的行。如果需要按game
分组选择最小point
值,则需要修改SQL语句。
以上是如何在SQL中选择具有最小值的唯一行?的详细内容。更多信息请关注PHP中文网其他相关文章!