2011-04-30 45 views
1

考慮選擇人的名字:MySQL的 - 基於2008年的事件

表稱爲namesidfirstlast領域。

firstlast是單獨的字段時,您會如何找到排名前5的最受歡迎的人?這是我現在的非工作代碼...

`SELECT *, COUNT(first) AS occurrences FROM `names` GROUP BY first ORDER BY occurrences DESC LIMIT 5` 

任何幫助將不勝感激!

+1

你什麼意思'做名稱和值是獨立的fields'? – 2011-04-30 09:13:41

+0

當你說「非工作代碼」時,這是否意味着你得到一個錯誤或只是錯誤的結果? – Galz 2011-04-30 09:17:17

+0

「\'」描繪內聯[code](http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks)。對於代碼塊,將這些行縮進另外四個空格。您也可以使用「\」來轉義特殊字符以使它們變平。例如:'SELECT * FROM \'foo \''。作爲解釋的事情,[簡明代碼示例](http://sscce.org/)往往是最不明確的方式。請顯示你的表模式(CREATE'語句)。 – outis 2011-04-30 09:21:13

回答

8

對於前5個名字,嘗試:

SELECT first, COUNT(*) AS occurrences 
FROM names 
GROUP BY first 
ORDER BY occurrences DESC 
LIMIT 5 

對於前5名,嘗試:

SELECT first, last, COUNT(*) AS occurrences 
FROM names 
GROUP BY first, last 
ORDER BY occurrences DESC 
LIMIT 5 
+0

或者,在結果中獲取名稱作爲一個字段:選擇不同的concat_ws('',第一個,最後一個)作爲名稱,按名稱計數(*)爲num按名稱排序num by desc limit 5; – Thilo 2011-04-30 17:43:54

+0

這是完美的,謝謝你的幫助! – RANGER 2011-05-02 04:06:57

+0

男人,這工作完美。我一直在查詢自己,直到找到它。 – Cyprus106 2013-12-17 21:52:47