2010-04-03 52 views
3

應該是一個簡單的。MySQL - 選擇頂部出現的條目

數據庫是mydb。其中一列是mydata。

什麼選擇查詢是否需要爲了選擇MYDATA前3發生的結果,但按字母順序排序?

例如,如果我的數據是這樣的:

mydata 
====== 
kilo (x 1 occurrence) 
lima (x 9 occurrences) 
golf (x 5 occurrences) 
echo (x 9 occurrences) 
zulu (x 8 occurrences) 

如何獲得它返回「回聲,利馬,祖魯語」,這是按字母順序排序前三名頻繁出現的條目?謝謝!

編輯:只需添加,他們需要是不同的條目。謝謝!

回答

2

使用一個內部的選擇,選擇你想要的結果,和外部選擇把他們按字母順序。

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'); 
+0

完美!知道它必須是沿着這些線的東西。謝謝一堆! – 2010-04-03 11:09:00

0
SELECT mydata 
FROM mytable 
GROUP BY mydata 
ORDER BY count(id), mydata 

不知道,雖然

0
SELECT mydata 
FROM mytable 
GROUP BY mydata 
ORDER BY COUNT(mydata) DESC, mydata 
LIMIT 3