mysql分组后取前几条数据
2015-07-30 12:18
621 查看
oracle 里面有rank() over()函数可以解决对分组后的每组数据进行排序的问题,mysql里面没有类似的函数,可以用行内变量实现。
以下sql为取分组后每组的前两条数据:
以下sql为取分组后每组的前两条数据:
SELECT SITE_ID, TOTAL_COUNT, RANK FROM ( SELECT SITE_ID @rownum :=@rownum + 1 ROWNUM, IF (@groupkey = SITE_ID, @rank :=@rank + 1, @rank := 1) AS RANK, @groupkey := SITE_ID GROUPKEY FROM ( SELECT SITE_ID FROM tab_review_area a ) t1, (SELECT @rownum := 0, @groupkey := NULL ,@rank := 0) t2 ) t3 WHERE RANK <= 2
相关文章推荐
- mysql中SELECT INTO 和 replace into SELECT 两种表复制语句
- mysql中SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
- mysql配置文件my.cnf解析
- 小试mysql分布式
- Ubuntu 下安装mysql数据库
- Mysql 存储过程查询结果赋值到变量的方法
- MySQL Sharding详解
- MySQL常见查询语句
- mysql报Fatal error encountered during command execution的解决办法
- Another MySQL daemon already running with the same unix socket
- Mysql配置
- 调用MYSQL存储过程实例
- Message: mysql_get_server_info(): The mysql extension is deprecated and ……
- Message: mysql_get_server_info(): The mysql extension is deprecated and ……
- 批量修改mysql 截取字符串
- mysql 单机同版本多实例 mysql55
- MySql access denied for user
- mysql 学习
- MySQL运算符
- MySQL 4.1/5.0/5.1/5.5/5.6各版本的主要区别