我有一个 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/