【发布时间】:2017-10-31 15:48:33
【问题描述】:
我有大约 15 列的 SQL 表,但以下列很重要:
Id, Area, Action, Timestamp.
Area 代表我的应用程序的实体(用户、文档等),Action 代表用户做了什么(create, view, edit, cancel, etc...). 使用 select 语句我得到了这个数据,它代表了某种历史记录(用户在应用程序上做了什么)。如果我在同一个区域做几个相同的动作,只有时间戳会区分它们(如果我们不考虑时间戳,它们是重复的)。考虑到所需列中的值(例如仅区域、操作),我如何摆脱“重复”记录并仅获取最近的记录(按时间戳)?我使用DISTINCT 尝试了一些查询,但无法实现。
编辑:它是 MSSQL。 我的初始查询是这样的(只有几个重要的列,考虑到还有更多的列):
如果我们只考虑“区域”、“操作”列,就会出现一些“重复”记录。例如多个记录,其中区域为Notice,操作为Details。最终结果应该是按时间戳 (desc) 排序的最后 5 条记录,并且根据 (area, action) 值没有重复。
【问题讨论】:
-
请出示您的查询
-
也显示示例数据。原始结果和预期结果。
-
请Edit您的问题并添加一些sample data 和基于该数据的预期输出。 Formatted text 请no screen shots。 edit 您的问题 - 请不要在 cmets 中提供邮政编码或其他信息。
-
您使用的是哪个DBMS 产品?后格雷斯?甲骨文? “SQL”只是一种查询语言,并不是特定数据库产品的名称。
-
我已经编辑了我的问题。它是 MS-SQL,我只需从表中选择 * 即可提供初始查询。
标签: sql select duplicates