2011-06-18 40 views
2

這是我的MySQL表。MySQL查詢檢索服務器上次關閉時的記錄

+-----------------+-------------------+------+----------+---------------------+ 
| server_check_id | server_service_id | time | error_id | created    | 
+-----------------+-------------------+------+----------+---------------------+ 
|   57532 |     1 | 226 |  1 | 2011-06-18 16:08:44 | 
|   57489 |     1 | 236 |  1 | 2011-06-18 16:03:29 | 
|   57446 |     1 | 229 |  1 | 2011-06-18 15:58:15 | 
|   57403 |     1 | 377 |  1 | 2011-06-18 15:52:57 | 
|   57360 |     1 | 232 |  1 | 2011-06-18 15:47:42 | 
|   57317 |     1 | 216 |  1 | 2011-06-18 15:42:27 | 
|   57274 |     1 | 227 |  1 | 2011-06-18 15:37:10 | 
|   57231 |     1 | 327 |  1 | 2011-06-18 15:31:47 | 
|   57145 |     1 | 232 |  1 | 2011-06-18 15:18:27 | 
|   57102 |     1 | 238 |  1 | 2011-06-18 15:13:12 | 
|   57059 |     1 | 210 |  1 | 2011-06-18 15:07:46 | 
|   57016 |     1 | 227 |  1 | 2011-06-18 15:02:31 | 
|   56973 |     1 | 1001 |  2 | 2011-06-18 14:55:45 | 
|   56930 |     1 | 1000 |  2 | 2011-06-18 14:49:44 | 
|   56887 |     1 | 237 |  1 | 2011-06-18 14:44:28 | 
|   56844 |     1 | 232 |  1 | 2011-06-18 14:39:14 | 
|   56801 |     1 | 229 |  1 | 2011-06-18 14:33:59 | 
|   56758 |     1 | 233 |  1 | 2011-06-18 14:28:43 | 
|   56715 |     1 | 225 |  1 | 2011-06-18 14:23:28 | 
|   56672 |     1 | 224 |  1 | 2011-06-18 14:18:14 | 
|   56629 |     1 | 223 |  1 | 2011-06-18 14:12:56 | 
|   56586 |     1 | 229 |  1 | 2011-06-18 14:07:42 | 
|   56543 |     1 | 246 |  1 | 2011-06-18 14:02:28 | 
|   56500 |     1 | 260 |  1 | 2011-06-18 13:57:10 | 
|   56457 |     1 | 207 |  1 | 2011-06-18 13:51:56 | 
|   56414 |     1 | 235 |  1 | 2011-06-18 13:46:41 | 
|   56371 |     1 | 222 |  1 | 2011-06-18 13:41:25 | 
|   56328 |     1 | 230 |  1 | 2011-06-18 13:36:10 | 
|   56285 |     1 | 218 |  1 | 2011-06-18 13:30:55 | 
|   56242 |     1 | 219 |  1 | 2011-06-18 13:25:38 | 
+-----------------+-------------------+------+----------+---------------------+ 

error_id 1表示工作,而2表示其不工作。

現在,我想知道我的服務上次沒有工作多久。爲了進一步解釋,我想要得到最近的記錄之間的持續時間,其中error_id 1與其先前的記錄有error_id 2之後的所有記錄,直到前一個有error_id的記錄爲止1.希望它是有意義的。

考慮到上述數據,我想記錄之間的持續時間與server_check_id 56930至57016

我可以用幾個在PHP循環做到這一點,但我想知道,如果可能有1個或2個簡單的MySQL查詢。

請指教。

回答

0

僞代碼:

1) $last_err_id = SELECT `server_check_id` FROM `table` WHERE `error_id` = '2' ORDER BY `created` DESC LIMIT 0,1 

2) $prev_work_id = SELECT `server_check_id` FROM `table` WHERE `error_id` = '1' AND `server_check_id` < $last_err_id ORDER BY `created` DESC LIMIT 0,1 

3) $start_err_time = SELECT `created` FROM `table` WHERE `error_id` = '2' AND `server_check_id` > $prev_work_id ORDER BY `created` DESC LIMIT 0,1 

4) $start_work_time = SELECT `created` FROM `table` WHERE `error_id` = '1' AND `server_check_id` > $last_err_id ORDER BY `created` DESC LIMIT 0,1 

結果將是$ start_work_time和$ start_err_time之間。

+0

正是我在找的東西!謝謝@OZ_ – Neerav