2013-02-18 77 views
0

我的mysql表與其他字段一起有一個時間戳字段,其中我存儲了unix時間戳(類似13076829212)。我想打一個Ajax請求將在降序(取最近)獲取由時間戳下令新添加的行,所以我送過去行號火這樣mysql order by timestamp desc with limit range not working

select id, name from tablename order by timestamp desc limit 30, 125273733849448 

我想所有fetch查詢最近一次序列中從最後一個取得的行號開始的行。

上述查詢正在做什麼是獲取隨機記錄。我知道我的查詢邏輯有問題,請幫忙。謝謝。

+0

你的想法是什麼?當你使用limit x,y時,x是起點,y是顯示多少條記錄。所以這個查詢實際上會跳過前30個結果(使用DESC命令)。這是可取的嗎? – 2013-02-18 12:45:04

+0

的想法是獲取我最後一個結果集被提取後添加的所有行。這就是爲什麼y是一個很大的數字來顯示所有的記錄 – coder101 2013-02-18 12:47:26

回答

3

討論後更新答案:

現在我明白的問題好一點,我認爲你應該使用:

SELECT id, name, timestamp FROM tablename WHERE timestamp > [saved timestamp] ORDER BY timestamp DESC 

[saved timestamp]將通過最新的時間戳的初始查詢被替換。

如果初始查詢也使用ORDER BY timestamp DESC您將知道最新的時間戳總是在第一行,因此可以輕鬆保存。


原來的答覆:

如果我理解這一點正確的30人是你獲取ID是遞增的最後一排的ID。那麼這應該這樣做:

SELECT id, name FROM tablename WHERE id > 30 ORDER BY timestamp DESC 
+0

actualy 30是最後一行的數字,我的意思是30是最後一行。我應該使用最後的id而不是該行的數量嗎?我想要做的是使用長查詢獲取新添加的行 – coder101 2013-02-18 12:38:25

+0

如果我應該使用最後一個id,這會引發一個新問題,因爲最初生成列表的第一個查詢也是以降序排列,所以我如何能夠獲取循環結果集中的最後一個id。我應該使用max(id)嗎? – coder101 2013-02-18 12:41:03

+0

也許你可以保存上一次的時間戳? – ellak 2013-02-18 12:45:00