获取MySQL行+一个before条件



我有一个时间日志表,其中所有条目都带有时间戳和事件。

现在,我想选择特定事件之后的所有行和该事件之前的一行(ORDERBYTime_stamp)。

我可以通过多个查询轻松实现这一点,但是否可以只通过一个查询实现?

使用多个查询

SELECT time 
FROM   table 
WHERE  event LIKE '%event_to_fint%' 
SELECT event 
FROM   table 
WHERE  time<'time from last query' 
LIMIT  1 
ORDER BY 
       time DESC 

一个选项是

  • 使用常规选择来选择所需的time记录
  • 将此结果与检索最大time的select合并,其中该最大time小于常规select中的最小time

SQL语句

SELECT  time
FROM    table
WHERE   event LIKE '%event_to_fint%'
UNION ALL
SELECT  MAX(time)
FROM    table
WHERE   time < (
                 SELECT  MIN(time)
                 FROM    table
                 WHERE   event LIKE '%event_to_fint%'
               )

这个解决方案不太好,但有效:

SELECT * 
FROM table
WHERE <condition_A>
ORDER BY <condition_B>
LIMIT (SELECT COUNT(*) 
       FROM table
       WHERE <condition_A>
       )+1

最新更新