mysql - 选择 MySQL 中某一列出现频率最高的行

标签 mysql join count group-by

我想从表中选择包含该列的 50 个最常见值的所有行。我尝试使用这样的连接,但似乎我选择的 LEFT JOIN 是错误的。声明的内部部分看起来不错。我应该在声明中更改哪些内容?

SELECT col1, col2 
FROM tbl as t1 
LEFT JOIN (
    SELECT id 
    FROM tbl 
    WHERE id > 123 
      AND id < 987654 
    GROUP BY col1 
    ORDER BY COUNT(id) DESC 
    LIMIT 50
) AS t2 
ON t1.id = t2.id

最佳答案

您是否尝试过使用 IN 运算符作为 WHERE 子句的一部分,而不是 JOIN?

例如...

SELECT col1, col2 
FROM tbl as t1 
WHERE t1.id IN (
    SELECT id 
    FROM tbl 
    WHERE id > 123 
        AND id < 987654 
    GROUP BY col1 
    ORDER BY COUNT(id) DESC 
    LIMIT 50
)

关于mysql - 选择 MySQL 中某一列出现频率最高的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38834119/

相关文章:

mysql - 从mysql执行系统命令

php - sql数据字符集/字符集,设置名称不起作用

mysql - 有趣的 MATCH AGAINST 问题 : not searching some words

MySql,在带有正则表达式的段落中查找

MySQL JOIN 两个表最接近的匹配值

mysql - 根据查询结果删除多个表

android - 我如何在 SQlite/PDO 中连接表、同时聚合并将结果转换为 JSON?

mysql - 带条件计数并连接

Mysql每组最大计数

jquery - 使用 jQuery 设置以唯一单词开头的 localStorage 键的计数