我有一个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;
我的表有超过44M的记录,以防万一。
感谢。
答案 0 :(得分:1)
你说你想按频率然后按长度订购,但是你要求按长度和频率订购。撤消您的ORDER BY
条款。