2013-04-04 68 views
-1

我需要查找表中時間差小於X分鐘的所有記錄嗎?
看起來我需要:
- 按時間排序表(UNIX時間),
- 找到當前記錄,並在表以前的記錄,
- 檢查當前時間和先前的時間差,
- 並採取記錄如果時間少於X分鐘

如何選擇時差小於X分鐘的記錄?

但是如何寫這個Mysql請求?


我的表:

id BIGINT(10)NOT NULL AUTO_INCREMENT,
uid INT(11)DEFAULT '0',
cid INT(11)NOT NULL DEFAULT '0',
uniqueid INT(11)NOT NULL,
publisher VARCHAR(255)字符集UTF8 NOT NULL,
booktitle VARCHAR(255)CHARA CTER SET UTF8 NOT NULL,
level VARCHAR(50)字符集UTF8 NOT NULL,
readinglevel INT(11)NOT NULL,
status INT(11)NOT NULL DEFAULT '0',
words INT(11) NOT NULL DEFAULT '0',
persent浮動(7,2)DEFAULT '0.00',
time BIGINT(10)DEFAULT '0',

+0

你能告訴我們你的表結構嗎?包含時間數據的列的數據類型將影響答案。向我們展示你到目前爲止所嘗試過的? – Sepster 2013-04-04 07:53:27

+0

我已添加表結構。 – SPnova 2013-04-04 08:17:21

回答

3

- 首先關閉所有的時間欄應該是一個時間戳類型(4B)而不是bigint(8B)

- 讓我們假設時間列的時間戳和X = 1,那麼你可以嘗試這樣的事:

SELECT 
    first.id, 
    second.id 
FROM 
    my_table as first 
INNER JOIN my_table as second 
    ON second.time >= first.time 
    ON second.time <= DATE_ADD(first.time, INTERVAL 1 MINUTE) 
WHERE 1 

但我提醒你它的效率非常低,特別是如果你沒有按時指數柱。

+0

好的解決方案,謝謝! – SPnova 2013-04-04 10:15:08

相關問題