2012-02-28 47 views
2

我有这个表数千行的:MySQL的 - 选择3个最高值和按字母顺序排序

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

我想选择3行与点击率最高,然后顺序按字母。 所以我要回:通过点击

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

,但只的订单,然后如果点击率是等于它的订单按字母顺序:

car 
cat 
cats 

我有这个。

回答

6

包装你的选择 - 与最高命中仅获取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 
0

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

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