簡體   English   中英

在時間戳字段之間的差異上過濾MySQL查詢

[英]Filter MySQL query on difference between timestamp fields

我有一張像這樣的桌子:

 RCD_ID      ID           TIMESTAMP
--------|-----------|---------------------
    1,   2737738826, '2015-10-30 16:19:17'
    3,   2737738826, '2015-10-30 16:22:46'
    4,   2737738826, '2015-10-30 16:24:36'
    5,   2737738826, '2015-10-30 16:29:49'
    7,   2737738826, '2015-10-30 16:40:02'
    9,   2737738826, '2015-10-30 17:11:55'

而且我需要過濾結果集,以便每條記錄彼此之間有20分鍾的“距離”:

 RCD_ID      ID          TIMESTAMP
--------|-----------|---------------------
    1,   2737738826, '2015-10-30 16:19:17'
    7,   2737738826, '2015-10-30 16:40:02'
    9,   2737738826, '2015-10-30 17:11:55'

[ 錯誤的問題:哪種方法是最好的(也是最快的)? ]

正確的問題:有人可以給我一些建議如何開始嗎?

編輯

我在表中添加了一個record_id字段,我嘗試了以下查詢:

select m.*,
       (select m2.rcd_id 
        from tbl_data m2 
        where (m2.rcd_id > m.rcd_id) AND (TIMESTAMPDIFF(MINUTE, m.log_timestamp, m2.log_timestamp) >= 30)
        order by m2.rcd_id limit 1) as m2
from tbl_data as m

但是它返回所有記錄。 我走對了嗎?

謝謝。

可以將表(我使用過“ logs”)連接到表本身,並且只保留那些滿足您時間限制的記錄,例如:

SELECT * FROM logs AS t1, logs AS t2 WHERE t1.ID = t2.ID AND t1.TIMESTAMP != t2.TIMESTAMP AND TIMESTAMPDIFF(MINUTE, t1.TIMESTAMP, t2.TIMESTAMP) = 20

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM