SQL Server – 使用MAX值选择记录

前端之家收集整理的这篇文章主要介绍了SQL Server – 使用MAX值选择记录前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
sql Server 2008中,我有一个表CUSTOMERS,它有两列:

ID,
平衡

如何以最有效的方式编写选择具有最大余额的客户的ID的查询

选项1:平衡和选择TOP(1) – >成本太高.

选项2:首先获取MAX数量,然后再创建一个使用where子句中的金额的查询 – >成本太高,似乎不可靠.

解决方法

你可以简单地使用HAVING:
SELECT 
  ID,BALANCE
FROM CUSTOMERS
GROUP BY ID
HAVING BALANCE=MAX(BALANCE)

(注意:我不记得sql Server是否需要GROUP BY子句,如果您没有立即获得所需的内容,请尝试删除GROUP BY ID.)

更新

对于某些版本的sql Server,上述查询无效.另一种选择是:

SELECT 
  ID,BALANCE
FROM CUSTOMERS
WHERE BALANCE = (SELECT MAX(BALANCE) FROM CUSTOMERS GROUP BY ID)

猜你在找的MsSQL相关文章