如何按 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
我的 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