在条件之前获取MySQL行+一个

时间:2012-03-05 10:57:03

标签: mysql sql

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

现在我想在特定事件和之前的一行(ORDER BY time_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 

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

一种选择是

  • 使用常规选择来选择所需的time记录。
  • 将此结果与一个选项结合使用,该数据会检索最大time,其最大time小于常规选择中的最小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%'
               )