查找每个事件的最新时间戳

时间:2014-02-05 17:50:44

标签: mysql sql

我的表格包含以下列|id|incident_number|created_at|note|

因此,每个事件都可以包含许多更新,更新按ID进行分类,并以created_at的形式提供2014-01-30 21:11:56时间。因此,一个incident_number可以有许多id和许多created_at,具体取决于它的更新频率。

我要做的是按照与时间对应的最新版本来过滤掉所有其他created_at

问题是,当运行查询时,我无法查看数据,并说出created_at是否小于此给定日期,因为我不确定这些事件何时被处理。

总体而言,我将能够在created_at日期之前使用最新更新排序来显示每个事件。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

我在你的问题中途丢了一点,但这可能会给你一个想法:

SELECT MAX(created_at) FROM ... GROUP BY incident_number

编辑:由于您的意见,我添加了此内容。

是,MAX仅返回最高值。我的发言是帮助您找到价值并根据您的需要添加其他价值。我想你需要的是:

SELECT MAX(created_at), incident_number, note FROM ... GROUP BY incident_number, note

对于每个事件,仅显示具有最新created_at时间戳的行。

EDIT2:正如您提到的一个错误,我检查了我的SQL。 note子句中缺少列GROUP BY。我没有看到子选择的必要性。

答案 1 :(得分:0)

好的,我最不得不做的是为created_at列创建一个子查询。最终查询看起来像......

SELECT Top 1
    wn.id, wn.incident_number, wn.created_at, note 
FROM
    sn_incident_work_note wn
Where
    wn.incident_number = 'INC0005607474' 

and wn.created_at = (Select MAX(iwn.created_at)
                    from sn_incident_work_note iwn
                    where iwn.incident_number = wn.incident_number)

Order By id DESC