Получить строки MySQL + один перед условием - PullRequest
2 голосов
/ 05 марта 2012

У меня есть таблица журнала времени, где все записи вводятся с отметкой времени и событием.

Теперь я хочу выбрать все строки после определенного события И ОДИН ряд перед (ORDER BY time_stamp), которыйevent.

Я могу легко добиться этого с несколькими запросами, но возможно ли это только с одним запросом?

Используя несколько запросов

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 голосов
/ 05 марта 2012

Один из вариантов -

  • Используйте обычный выбор, чтобы выбрать 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%'
               )
0 голосов
/ 05 марта 2012

Это решение не слишком красиво, но работает:

SELECT * 
FROM table
WHERE <condition_A>
ORDER BY <condition_B>
LIMIT (SELECT COUNT(*) 
       FROM table
       WHERE <condition_A>
       )+1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...