如何按 mysql 中的值排序

How to order group by values in mysql

我的 mysql 数据库中有 table。

我正在存储用户正在订阅某个主题。

我想打印订阅者订购的前 10 个主题 (targetId)。

演示:

id | targetId
-----------------
1  | A
2  | A
3  | B

结果:

targetId | COUNT
-----------------
A        | 2
B        | 1

我的问题是我不知道如何对结果进行排序。

我当前的查询是:

SELECT targetId, COUNT(*) FROM subscription GROUP BY targetId LIMIT 10 

添加一个ORDER BY子句:

SELECT targetId, COUNT(*)
FROM subscription
GROUP BY targetId
ORDER BY COUNT(*) DESC
LIMIT 10;

请注意,通常您应该始终 在使用 LIMIT 时使用 ORDER BY。在没有 ORDER BY 的情况下使用 LIMIT 是相当不确定的,因为不清楚您要检索哪些记录。

如果您需要按计数器升序排序,请使用以下查询

SELECT targetId, counter FROM
(
    SELECT targetId, COUNT(*)counter
    FROM subscription
    GROUP BY targetId
)A  ORDER BY counter
LIMIT 10