2010-06-18 14 views
0

我有一個表與下面的模式:如何找到類似MySQL的數據庫2倍之間的差異在單個查詢

+------------------+ 
|Field | Type  | 
+------------------+ 
| id | char(30) | 
| time | datetime | 
+------------------+ 

id列不是主鍵,所以因此,表包含項目,如:

10, 2010-05-05 20:01:01 
10, 2010-05-05 20:01:05 
13, 2010-05-05 20:04:01 
10, 2010-05-05 20:04:10 
13, 2010-05-05 20:05:03 
10, 2010-05-05 20:05:28 

我想找個時間之差爲給定ID,即所期望的結果將是:

10, 00:04:27 
13, 00:01:02 

我可以使用下面的查詢在MySQL做到這一點:

SELECT t2.id, TIMEDIFF(t2.max, t2.min) AS visit_length FROM 
(
    SELECT id, MAX(time) AS max, MIN(time) AS min FROM page_view 
    GROUP BY id 
) AS t2 

不過,我使用的引擎是不支持子查詢MySQL的衍生物。

是否有任何方法可以在不使用子查詢的情況下通過單個查詢實現相同的結果?

感謝

回答

0

將這項工作?

SELECT TIMEDIFF(MAX(time), MIN(TIME)) AS visit_length 
FROM page_view 
GROUP BY(id) 
+0

是的,這是完美的,謝謝。 – 2010-06-18 10:02:09

0
select max(time)-min(time), id 
from page_view 
group by id 
+0

謝謝,這工作,但返回的時間以微秒。 – 2010-06-18 10:00:42

+0

你也可以在這裏使用TIMEDIFF:選擇TIMEDIFF(最大(時間),最小(時間))... – 2010-06-18 10:01:54