日期:2014-05-17  浏览次数:20615 次

如何通过表内某字段返回该字段对应排行前n的行
有一个表,结构如下:
CityName    SearchName     SearchCount
city_a      keywords_a     30
city_a      keywords_c     26
city_a      keywords_g     25
....
city_b      keywords_g     60
city_b      keywords_e     58
city_b      keywords_x     30
city_b      keywords_h     25
city_b      keywords_i     12
....
city_c      keywords_c     125
city_c      keywords_e     58
city_c      keywords_k     45
city_c      keywords_p     25
.....

CityName、SearchName构成主键,一旦某城市下某个关键字[SearchName]被搜索一次,搜索量[SearchCount]自动加1


现在就是想用一条语句搜索出各城市下关键字排行前N的所有数据,不想返回整个表,这个感觉不好整,向各位请教一下。

谢谢。



------解决方案--------------------
2005以后可以使用row_number()over(partition by CityName  order by  SearchCount )id来给每一行加上一个id,并且以城市名来分组。