如何在mysql中按值排序

Posted

技术标签:

【中文标题】如何在mysql中按值排序【英文标题】:How to order group by values in mysql 【发布时间】:2021-09-03 19:46:46 【问题描述】:

我的 mysql 数据库中有表。

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

我想打印订阅者订购的前 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 

【问题讨论】:

【参考方案1】:

添加ORDER BY 子句:

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于如何在mysql中按值排序的主要内容,如果未能解决你的问题,请参考以下文章

如何在熊猫中按值计数对列进行排序

如何在PHP中按值对对象数组进行排序

在火花对 RDD 中按值排序

在 JavaScript 中按值对字典进行排序

在 Java 中按值映射自动排序

在python中按值对defaultdict进行排序