如何在SQL Server中从我的查询中获取最大日期?

时间:2018-05-10 09:14:05

标签: sql sql-server

如何从每个玩家的查询中获取最大日期(最新日期)?

表中的数据:

Users:find()->where(['>', 'posts', 0])->all()

所以结果只是player1(max DateCreated)的一条记录和player2的一条记录

Id  PlayerId    Username    DateCreated 
2   777         player1     2018-01-01 00:00:00.0000000 
3   778         player2     2018-05-05 00:00:00.0000000 
5   777         player1     2018-04-04 00:00:00.0000000 

2 个答案:

答案 0 :(得分:1)

您可以在下面替换子查询。

SELECT [PlayerId], MAX([DateCreated]) AS LastDate FROM TABLE with (nolock)
group by [PlayerId]

答案 1 :(得分:1)

你想要的是这个:

    SELECT Id
          ,PlayerId
          ,Username
          ,DateCreated  
    FROM
          (
            SELECT Id
                  ,PlayerId
                  ,Username
                  ,DateCreated 
                  ,ROW_NUMBER() OVER (Partition By PlayerId Order By DateCreated DESC) AS FilterMostRecent
            FROM Players
            ) x
     WHERE FilterMostRecent = 1

我建议您使用SQLFiddle来帮助我们:)

尝试查询并查看它是否符合您的期望

http://sqlfiddle.com/#!18/af1ec/4/0

请尽量使用动态SQL作为最后的手段

http://www.sommarskog.se/dynamic_sql.html

真的,真的避免(NOLOCK)

https://blogs.sentryone.com/aaronbertrand/bad-habits-nolock-everywhere/

除非你真的知道自己在做什么。