在SQL Server中,如何选择多个字段(没有agregation函数)并将DISTINCT语句仅应用于一个特定字段?
例如:如果我有一个用于存储用户操作的表,则伪模式将如下所示:
UserActions
------------
id,
User,
Action
insertDate
Run Code Online (Sandbox Code Playgroud)
我想在不重复"Action"字段的情况下获取给定用户的最新操作?
例如,如果表格内容是:
1, john, update, 01/01/09
2, john, update, 01/02/09
3, john, update, 01/03/09
4, john, delete, 01/04/09
5, john, insert, 01/05/09
6, john, delete, 01/06/09
Run Code Online (Sandbox Code Playgroud)
我想得到:
6, john, delete, 01/06/09
5, john, insert, 01/05/09
3, john, update, 01/03/09
Run Code Online (Sandbox Code Playgroud)
提前谢谢了.
内部查询应为用户'john'选择每个操作的最大ID,外部查询将选择与内部查询中的id集合匹配的那些记录,因此您应该只获取指定用户的每个操作的最后一个.
select id, user, action, insertDate
from userActions
where id in (select max(id)
from userActions
where user ='john'
group by action)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3175 次 |
| 最近记录: |