使用SQL Server中的连接查询获取最大值

我有一个用户表:

|username|UserType|
|John    |A       |
|Mary    |A       |
|Anna    |B       |

和UserPoints

|UserType|MinPoints|Level  |
|A       |100      |Bronze |
|A       |200      |Silver |
|A       |300      |Gold   |
|B       |500      |Bronze |

和用户地址

|UserType|Address
|A       |Address1
|B       |Address2

我正在寻找查询以获取MinPoints列的最大值。

我想要不使用Group by子句的结果。 我尝试了以下

Select UserType,UA.Address,(Select max(MinPoints) from Users T1 WHERE T1.Usertype=U.Usertype)MinPoints from Users U
Left Join UserAddress UA on UA.UserType=U.UserType
Select UserType,MinPoints 
from Users U
Left Join UserAddress UA on UA.UserType=U.UserType
Left Join (Select UserType,max(MinPoints) from Users T1 Group by UserType) x ON X.Usertype=U.Usertype

对于以上查询,我得到了相同的结果。 但是我想要的是查询更好地了解性能。

请建议

sl819532666 回答:使用SQL Server中的连接查询获取最大值

这将返回MinPoints等于MinPoints最大值的一个或多个用户的所有用户数据。使用示例数据,JOIN可以使用,但是您可能需要将它们设为LEFT JOIN

SELECT
  u.UserName,ua.Address,up.MinPoints AS MaxOfMinPoints
FROM
  UserPoints AS up
  JOIN
  Users AS u
    ON u.UserType = up.UserType
  JOIN
  UserAddress AS ua
    ON ua.UserType = up.UserType
WHERE
  up.MinPoints = (SELECT MAX(s.MinPoints) FROM UserPoints AS s)
本文链接:https://www.f2er.com/3151667.html

大家都在问