如何在mysql中为每条记录检索表中的两条记录

时间:2014-11-28 07:48:50

标签: mysql sql select sql-order-by greatest-n-per-group

我有一个"回复"有结构的表。

replyno topicno replydesc replyrank

现在我需要为每个topicno(这是一个外键)以降序排序(按前两个排名较高的记录)检索由replyrank排序的前2条记录。

我需要一个mysql中的查询,可以为所有主题编号提取这样的结果集。

请给我一个可以更快执行的优化查询

2 个答案:

答案 0 :(得分:0)

试试这个:

SELECT replyno, topicno, replydesc, replyrank 
FROM (SELECT replyno, topicno, replydesc, replyrank, 
             IF(@topicno = @topicno:=topicno, @id:=@id+1, @id:=1) AS id 
      FROM reply, (SELECT @id:=1, @topicno:=0) A 
      ORDER BY topicno, replyrank DESC
     ) AS A 
WHERE id <= 2;

答案 1 :(得分:0)

尝试此查询我认为它会为你工作

 SELECT replyno, topicno FROM reply ORDER BY replyrank DESC LIMIT 2