应该是一个简单的。
数据库是mydb。其中一列是 mydata。
我需要什么 SELECT 查询才能从 mydata 中选择前 3 个出现的结果,但按字母顺序排序?
比如我的数据是这样的:
mydata
======
kilo (x 1 occurrence)
lima (x 9 occurrences)
golf (x 5 occurrences)
echo (x 9 occurrences)
zulu (x 8 occurrences)
如何让它返回“echo、lima、zulu”,这是按字母顺序排序的前三个最常出现的条目?谢谢!
编辑:补充一下,它们需要是不同的条目。谢谢!
最佳答案
使用内部选择来选择您想要的结果,使用外部选择将它们按字母顺序排列。
SELECT mydata
FROM (
SELECT mydata
FROM mytable
GROUP BY mydata
ORDER BY COUNT(mydata) DESC
LIMIT 3
) AS T1
ORDER BY mydata
结果:
'echo'
'lima'
'zulu'
测试数据:
CREATE TABLE mytable (mydata VARCHAR(100) NOT NULL);
INSERT INTO mytable (mydata) VALUES
('kilo'),
('lima'), ('lima'), ('lima'), ('lima'), ('lima'), ('lima'), ('lima'), ('lima'), ('lima'),
('golf'), ('golf'), ('golf'), ('golf'), ('golf'),
('echo'), ('echo'), ('echo'), ('echo'), ('echo'), ('echo'), ('echo'), ('echo'), ('echo'),
('zulu'), ('zulu'), ('zulu'), ('zulu'), ('zulu'), ('zulu'), ('zulu'), ('zulu');
关于MySQL - 选择出现次数最多的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2571005/