MySQL查询以获取最常出现的最长文本

标签 mysql sql

我有一个 MySQL 表 t1 和一个文本字段 f1。我有这个查询来查找 f1 的前 100 个最常见的值及其频率:

SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 ORDER BY c DESC LIMIT 100;

我现在需要的是一个查询,找出最常出现的 f1 的最长值是什么。也就是说,我想首先按频率对表的记录进行排序(就像上面的查询一样),然后我想按长度对它们进行排序并获取前 100 个。我尝试用这个查询来做,但它没有返回我想要的是,它只返回具有最长 f1 值的记录(其中大多数只出现 1 次):

SELECT f1, LENGTH(f1) AS l, COUNT(*) AS c FROM t1 GROUP BY f1, LENGTH(f1) ORDER BY l DESC, c DESC LIMIT 100;

我的表有超过 4400 万条记录以防万一。

谢谢。

最佳答案

你说你想按频率然后长度排序,但你要求按长度然后频率排序。反转您的 ORDER BY 子句。

关于MySQL查询以获取最常出现的最长文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7005798/

相关文章:

sql - 存储 DateTime (UTC) 与存储 DateTimeOffset

sql - 计算多次连接的表中的值

mysql连接查询

java - IBM Security (Tivoli) Directory Integrator 中的 HTTP 服务器连接器

php - mysqli 不会插入

SQL 不是自动递增的

MySQL_在单个查询中检索多行和多列

mysql - 在 MySql 中实现一个 ETL 项目的最佳免费解决方案是什么

php - bind_param 数字参数不等于变量

MySQL选择分隔数据