按最常见的值对 mysql 结果进行排序

use*_*429 1 mysql

有没有一种方法可以根据值在 mysql 列中出现的频率来对数据进行排序并将它们DISTINCT. 因此,如果表中有一个颜色列,如下所示:

colors
------ ----
red   |
blue  | 
red   |
green |
blue  |
red   |
yellow|
blue  |
green |
red   |
Run Code Online (Sandbox Code Playgroud)

结果将是:

red
blue
green
yellow
Run Code Online (Sandbox Code Playgroud)

因为红色出现了 4 次,蓝色出现了 3 次,绿色出现了两次,黄色出现了一次。谢谢

egg*_*yal 6

您需要对记录进行分组,然后对合适的聚合函数进行排序:

SELECT colors FROM my_table GROUP BY colors ORDER BY COUNT(*) DESC
Run Code Online (Sandbox Code Playgroud)

在sqlfiddle上查看。