我想从表中选择包含该列的 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/