這是我的表結構:
monResults:查詢來獲取連續的事件,如果他們足夠接近
ID INT(10)
monDateTime DATETIME()
TYPEID INT(10)
我需要查詢來獲取所有具有連續monDateTime的monResults,這些monResults間隔小於1分鐘並且具有相同的typeId。我希望能夠獲得X個這樣的事件。大多數情況下,我不知道如何添加條件以使連續的結果小於1分鐘。
這是我的表結構:
monResults:查詢來獲取連續的事件,如果他們足夠接近
ID INT(10)
monDateTime DATETIME()
TYPEID INT(10)
我需要查詢來獲取所有具有連續monDateTime的monResults,這些monResults間隔小於1分鐘並且具有相同的typeId。我希望能夠獲得X個這樣的事件。大多數情況下,我不知道如何添加條件以使連續的結果小於1分鐘。
有這個問題的一些答案這可能會導致你在正確的方向:
你是否試圖做到這一點?你想傳入一個typeId,並讓查詢返回所有相距不到一分鐘的ID嗎?
問題是你只是得到一個排序列表,你仍然需要在程序中解析它,你會得到一個非常人爲的例子,其中monDateTime是單位時間戳的變體,的打字。
id=1, monDateTime=3
id=5, monDateTime=57
id=2, monDateTime=63
id=3, monDateTime=120
所以,你需要確定你的應用程序,前兩個是一組,但第二和第三是一夥的,所以ID = 2和5是兩組。
如果您在程序中循環並指出我想要在特定的id
和typeId
的一分鐘之內的所有ID,那麼您可以在程序中組織它。
然後,你可以使用TimeDiff
功能減去您的特定ID,並在數據庫中的ID: http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timediff
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