获取最后插入的事件

时间:2017-05-01 04:33:17

标签: php mysql sql

以下是我的数据库表条目:

 id    cid     data_ref_id   event_type_id  event_handle     event_datetime

  1    235        1                162      Test description   2016-08-14
  2    235        1                162      Test1 description  2016-08-15
  3    235        1                162      Test2 description  2017-05-01
  4    235        1                162      Test3 description  2017-05-12

在显示2的事件条目时,它应将事件1 event_datetime显示为过去的事件条目。对于事件条目4,它应该将事件3 event_datetime显示为过去的事件条目,依此类推...... sql有什么方法可以获得这样的记录吗?

3 个答案:

答案 0 :(得分:0)

如果我理解正确,您可以使用相关子查询:

select t.*,
       (select max(t2.event_datetime)
        from t t2
        where t2.event_datetime < t.event_datetime
       ) as prev_datetime
from t;

答案 1 :(得分:0)

SELECT event_type_id,MAX(event_datetime) FROM `table` WHERE 1;

这将选择最后插入的事件。

答案 2 :(得分:0)

假设“{1}}在”条目“表中是PRIMARY KEY或UNIQUE KEY,并假设”previous“event_datetime基于id值(来自行id = 1,用于行id = 2,从行id = 3开始,对于行id = 4),这样的事情会从“上一行”返回event_datetime ......

id

如果“上一个”SELECT e.id , e.event_datetime , ( SELECT p.event_datetime FROM entries p WHERE p.id < e.id ORDER BY p.id DESC LIMIT 1 ) AS prev_event_datetime FROM entries e ORDER BY e.id 基于event_datetime而不是event_datetime的值,则相关子查询可以使用id列代替{{ 1}}。

event_datetime

这里提供了两个选项,因为规范并不清楚。我们是否希望row id = 1作为行id = 2的“previous”,因为那是之前的id ...或者我们是否获得该行,因为row id = 1恰好有最新的SELECT e.id , e.event_datetime , ( SELECT p.event_datetime FROM entries p WHERE p.event_datetime < e.event_datetime ORDER BY p.event_datetime DESC LIMIT 1 ) AS prev_event_datetime FROM entries e ORDER BY e.id 在行id = 2时早于id。目前尚不清楚。