2012-03-05 24 views
2

我有一個時間日誌表,其中所有條目都用時間戳記和事件輸入。在條件之前獲取MySQL行+一個

現在我想選擇特定事件之後的所有行以及之前的一行(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 
+0

你可以上傳你的**多個查詢** – 2012-03-05 11:00:58

+0

選擇時間FROM表WHERE事件LIKE '%event_to_fint%'
FROM表+ SELECT事件,時間<'時間from last que'LIMIT 1 ORDER BY time DESC
and combine – Seb 2012-03-05 11:06:21

回答

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%' 
       ) 
0

該解決方案中不太好,但工作原理:

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

不,不起作用。您不能在LIMIT子句中進行計算。即使LIMIT 1 + 1也會導致錯誤。至少在MySQL 5.1中。那是。 – fancyPants 2012-03-05 11:23:14

+0

我試着在sqlite中確實..我認爲它在mysql上工作.. – 2012-03-05 11:27:46

相關問題