2009-12-10 33 views
1

這是我的表結構:
monResults:查詢來獲取連續的事件,如果他們足夠接近

ID INT(10)
monDateTime DATETIME()
TYPEID INT(10)

我需要查詢來獲取所有具有連續monDateTime的monResults,這些monResults間隔小於1分鐘並且具有相同的typeId。我希望能夠獲得X個這樣的事件。大多數情況下,我不知道如何添加條件以使連續的結果小於1分鐘。

回答

0

你是否試圖做到這一點?你想傳入一個typeId,並讓查詢返回所有相距不到一分鐘的ID嗎?

問題是你只是得到一個排序列表,你仍然需要在程序中解析它,你會得到一個非常人爲的例子,其中monDateTime是單位時間戳的變體,的打字。

id=1, monDateTime=3 
id=5, monDateTime=57 
id=2, monDateTime=63 
id=3, monDateTime=120 

所以,你需要確定你的應用程序,前兩個是一組,但第二和第三是一夥的,所以ID = 2和5是兩組。

如果您在程序中循環並指出我想要在特定的idtypeId的一分鐘之內的所有ID,那麼您可以在程序中組織它。

然後,你可以使用TimeDiff功能減去您的特定ID,並在數據庫中的ID: http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timediff

0
SELECT * 
FROM (
     SELECT (@typeID = typeID AND @pdt >= monDateTime - INTERVAL 1 MINUTE) AS con, 
       @typeID := typeID, 
       @pdt := monDateTime 
     FROM (
       SELECT @typeID := NULL, 
         @pdt := NULL 
       ) vars, 
       mytable 
     ORDER BY 
       monDateTime 
     ) q 
WHERE con