作者red0whale (red whale)
看板Database
标题[SQL ] MySQL中纪录的重复次数从最多到最少的排名
时间Mon Aug 22 10:42:12 2016
资料库名称: MySQL
资料库版本: (略)
内容/问题描述:
假设资料表`table`中有栏位`country`
其中一部份`country`的纪录包含:`United States`、`Japan`、`China`、`Germany`和`Taiwan`
我想要将这5个`country`的纪录以「纪录的重复次数多寡」来做排序
请问我该怎麽做?
--
我上网找了一下有关「MySQL的纪录重复出现次数」的SQL语法如下:
SELECT country, count( * ) AS count
FROM table
GROUP BY country
ORDER BY count DESC
但是它是针对「全部的纪录」来做排序,但是我只想要上面这5个资料的排序即可
请问我该怎麽做才会比较好、最准确且比较省主机效能?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.138.104.124
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1471833736.A.DCE.html
※ 编辑: red0whale (101.138.104.124), 08/22/2016 11:22:31
1F:→ johnney: where country like ? 08/22 12:02
谢谢
但我好像又遇到另外一个问题了:
先不要管前面那个问题,
如果说我今天拿这个「重复次数多寡」的排序来做为其他SQL语句的`ORDER BY`排序依据
我又该怎麽做?
因为就我所知的SQL语句里的`ORDER BY`只有DESC和ASC这两个排序功能
没有其他的排法
所以这也是我头疼的地方
故想问问该如何解决这另外一个问题
※ 编辑: red0whale (101.138.104.124), 08/22/2016 12:17:10
2F:推 streetbad: where country in ('a','b','c','d','e') 08/22 13:45
3F:推 JeremyJoung: 把这个排序後的结果 和其他TABLE作JOIN後再ORDER一次 08/23 16:02
4F:推 streetbad: 建个暂存资料表把第一次查询的排序塞进去并给ID 08/23 16:54
5F:→ streetbad: 与想要查询的其他资料表JOIN後 再依需求ORDER BY 08/23 16:55
6F:→ streetbad: 另外ORDER BY 应该可以 ORDER BY A DESC,B ASC之类的 08/23 16:56
7F:→ streetbad: 方式来进行不同栏位的排序动作 08/23 16:56
8F:推 shadowjohn: count(b.*) from .left outer join b.xx on a.id=b.id 09/13 14:45
9F:→ shadowjohn: order by counts desc 09/13 14:45