Mysql 如何从选择中进行选择?

Mysql 如何从选择中进行选择?,mysql,sql,Mysql,Sql,我正在创建一个评论系统,它将有两个顶级评论 SELECT * FROM pagecomments WHERE page_id='$pageid' ORDER by date_entered desc , likes-dislikes DESC limit 2 如何选择最近的20行,然后从该选择中选择前2行(喜欢或不喜欢)?我可以用一个PHP循环来实现,但效率不高。目前,我只是从所有评论中选出前两位,但前两位的评论从未改变,因为人们刚刚投票选出了这两位: SELECT * FROM pagec

我正在创建一个评论系统,它将有两个顶级评论

SELECT * FROM pagecomments WHERE page_id='$pageid' ORDER by date_entered desc , 
likes-dislikes DESC limit 2
如何选择最近的20行,然后从该选择中选择前2行(喜欢或不喜欢)?我可以用一个PHP循环来实现,但效率不高。目前,我只是从所有评论中选出前两位,但前两位的评论从未改变,因为人们刚刚投票选出了这两位:

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

编辑:表格按列“id”排序,该列是自动递增的。page_id是站点上的页面。抱歉。

嵌套您的查询:

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

订单不仅按喜好,还按输入的日期或时间戳排序。通过按日期订购,您可以确保获得最新的20条帖子或评论

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

由于您的
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

您的pagecomments表中有哪些列?您是否有一个自动增量字段或时间戳来决定最近的20行?很难理解您想做什么-向我们展示一个表格并澄清您的陈述表格是按列“id”排序的,这是自动增量。page_id是站点上的页面。这将只选择最近的2条评论,而不考虑它们的喜欢/不喜欢。选择最近输入的20行后,查询按喜欢/不喜欢排序,确实有两个排序条件,首先按日期排序,然后按喜欢/不喜欢排序。