如何从每个玩家的查询中获取最大日期(最新日期)?
表中的数据:
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
答案 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/
除非你真的知道自己在做什么。