我有这个包含数千行的表:
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
但它只按命中排序,然后如果命中等于它按字母顺序排序。
答案 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