MySQL - 选择3个最高值并按字母顺序排序

时间:2012-02-28 19:55:52

标签: mysql

我有这个包含数千行的表:

id  |  Keyword  |  hits
1      cat         3
2      cats        5
3      castle      1
4      cream       2
5      car         12
.      .           .

我想选择包含大多数匹配的3行,然后按字母顺序排序。 所以我想回来:

car
cat
cats

我有这个:

SELECT keyword,hits FROM table ORDER BY hits DESC, keyword ASC LIMIT 3

但它只按命中排序,然后如果命中等于它按字母顺序排序。

2 个答案:

答案 0 :(得分:6)

将您的SELECT - 仅获得具有最高匹配的3行 - 包装为另一个按关键字排序的查询中的子查询:

SELECT *                    --- or just: SELECT keyword
FROM
  ( SELECT keyword, hits 
    FROM table 
    ORDER BY hits DESC
           , keyword ASC    --- this is needed only in case of ties at 3rd place
    LIMIT 3
  ) tmp
ORDER BY keyword

答案 1 :(得分:0)

您可以使用子查询(不知道您的mysql版本)。

SELECT * 
FROM  
    (SELECT keyword, hits 
     FROM table 
     ORDER BY hits DESC 
     LIMIT 0,3) AS topThree 
ORDER BY keyword ASC