2013-02-08 65 views
1

我有一个表中记录到表中的事件,可以有许多事件,如'开始','a','b','b','a' ,..等等mysql查询模式后的每个下一个元素

我想找到具有事件“A” 所遵循“开始”事件的所有第一条目。

开始后的一个everty通常是我正在寻找的事件,但并非总是如此。

所以我得到的是由踏歌自动识别下一个事件,而不是由逻辑,这是90%的权利,但并非总是如此:

SELECT b. * 
FROM log AS a 
LEFT JOIN log AS b ON a.id = b.id -1 
WHERE a.event = 'start' 

有没有纯粹的MySQL的方式吗?

回答

0

这不是非常优化的高性能或者我猜,但它的工作

SELECT a.* 
FROM log AS a 
WHERE a.event = 'a' && "start" = (SELECT event FROM log WHERE id<a.id ORDER BY id DESC LIMIT 1) 
+0

这是好多了,但对很多querys确实有点慢。仅供参考,我在脚本中解决了它(获取所有,foreach,首次发现时设置标志,获取标志和想要的对象) – xuedi 2013-02-14 17:49:56