以下是我的数据库表条目:
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有什么方法可以获得这样的记录吗?
答案 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
。目前尚不清楚。