我正在创建一个评论系统,该系统将有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 :(得分:0)
嵌套您的查询:
SELECT *
FROM (
SELECT *
FROM pagecomments
WHERE page_id='$pageid'
ORDER BY date DESC
LIMIT 20
) t
ORDER BY likes-dislikes DESC
LIMIT 2
答案 1 :(得分:0)
不仅由LIkes订购,按订单输入的第一个订单或时间戳。按日期排序,您可以确保获得最新的20个帖子或评论。
SELECT * FROM pagecomments WHERE page_id='$pageid' ORDER by date_entered desc ,
likes-dislikes DESC limit 2
答案 2 :(得分: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