我的数据库中有一个名为Events的表。 在这个表中,我得到的每条消息都有事件,系统用它来执行每一步。
让我们说
ID class Time MessageID Text
1 message 6/6/2018 8:00 aaa message received
2 message 6/6/2018 8:01 aaa message processed
3 message2 6/6/2018 8:02 bbb message received
4 message 6/6/2018 8:03 aaa message send
5 message2 6/6/2018 8:04 bbb message processed
6 message 6/6/2018 9:00 ccc message received
7 message 6/6/2018 10:00 ccc message processed
我不时会遇到一些消息刚刚结束消息已处理
我需要编写一个查询,通过课程消息检查所选消息中的所有消息,并且他们的上一个事件是消息已处理 并给我结果只有最后一行
提前谢谢
答案 0 :(得分:0)
我想我的问题有解决方案......
select ID, class, time, messageID, text
from Events
where class = 'message'
and text = 'message processed'
and time BETWEEN '2018-06-06 00:00:00' AND '2018-06-06 23:59:59'
order by ID desc
limit 1
简要说明:
查询将搜索具有where子句中条件的所有记录:class ='message',text ='message processed'和日期时间。
然后按ID按降序排序,排序后,第一个找到的ID将是表格中的最后一个ID。
然后使用LIMIT命令仅返回第一条记录。
提示:您不应该使用像DATE(datecolumn)='2018-06-06'这样的命令,因为它的性能很差。
我希望我能帮到你!