2014-01-23 54 views
0

我正在創建一個評論系統,其中將有2個最熱門評論。如何從選區中進行選擇?

如何選擇最新的20行,然後從該選擇中選擇前2行(喜歡不喜歡)?我可以用PHP循環來做,但效率不高。目前,我只是選擇從所有評論前2,但兩個頂部的意見永遠不會改變,因爲人們只是贊成票的那些:

SELECT * FROM pagecomments WHERE page_id='$pageid' ORDER BY likes-dislikes DESC LIMIT 2 

編輯:表由列「ID有序「,這是auto_increment。 page_id是網站上的頁面。抱歉。

+0

在你pagecomments表列是什麼?你有一個auto_increment字段或時間戳來決定最新的20行嗎? – sgeddes

+1

很難理解你正在做什麼 - 向我們展示一張表並澄清你的陳述 –

+0

該表由「id」列定義,即auto_increment。 page_id是網站上的頁面。 – Penian4

回答

0

巢查詢:

SELECT * 
FROM (
    SELECT * 
    FROM  pagecomments 
    WHERE page_id='$pageid' 
    ORDER BY date DESC 
    LIMIT 20 
) t 
ORDER BY likes-dislikes DESC 
LIMIT 2 
0

訂單不僅喜歡,通過輸入的日期或時間戳記的一階。按日期排序,您可以確保您將獲得最新的20條信息或評論。

SELECT * FROM pagecomments WHERE page_id='$pageid' ORDER by date_entered desc , 
likes-dislikes DESC limit 2 
+0

這隻會選擇最新的2條評論,不管他們喜歡/不喜歡。 – Penian4

+0

選擇最近輸入的20行後,查詢按喜好排序,實際上有兩種排序條件,首先是日期,然後是喜歡不喜歡。 – datelligence

0

由於您的id列設置爲auto_increment,使用子查詢:

select *, likes-dislikes 
from (
    select * 
    from pagecomments 
    where page_id='$pageid' 
    order by id desc 
    limit 20 
) t 
order by likes-dislikes desc 
limit 2