2016-03-08 98 views
1

我有sql,有4個值 - ID,TEXT,LIKES,TIME。我有顯示從SQL的帖子的PHP頁面。我想先顯示「熱門」帖子。Php mysql - 按臨時值排序

可以說,「熱門」的職位是由公式 - LIKES/TIME給出的。

這樣做最有效的方法是什麼?

我應該在SQL中使用SCORE創建另一列,並且每隔幾分鐘更新一次嗎?或者,也許每次用戶進入網站時,他都會查看過去24小時內所有帖子的分數?

+1

您是否還有一個帶有給定記錄的時間戳的列? –

+0

只需進行兩個查詢,其中一個用於使用LIKES/TIME公​​式的熱門帖子具有一定限制,另一個用於按時間順序排列的普通帖子 – Asur

回答

2

我想你可以簡單地通過這種方式

Select id, text, likes, time, likes/time as score from youtable 
order by score 

訂購,如果你的時間是一個日期,你需要差異從actula日期,你可以做

Select id, text, likes, time, likes/(curdate() - time) as score from youtable 
order by score 
+0

謝謝! PS。時間是日期,我該如何做CurrentTime-time?要檢查通過的時間 –

+0

我已經更新了答案 – scaisEdge

1
SELECT id, count(*) as score FROM <yourtable> GROUP BY id ORDER BY score DESC LIMIT 0,10 

這是假定id爲該帖子的主鍵,你想要前10名活躍的。