Mysql 分组排序
2016-02-23 16:36
627 查看
需求:
按照cid、author分组,再按照id倒叙,取出test表中前2条记录出来。
建表以及初始数据如下:
解答:
按照cid、author分组,再按照id倒叙,取出test表中前2条记录出来。
建表以及初始数据如下:
DROP TABLE IF EXISTS test; CREATE TABLE test ( id INT PRIMARY KEY, cid INT, author VARCHAR(30) ) ENGINE=INNODB; INSERT INTO test VALUES (1,1,'test1'), (2,1,'test1'), (3,1,'test2'), (4,1,'test2'), (5,1,'test2'), (6,1,'test3'), (7,1,'test3'), (8,1,'test3'), (9,1,'test3'), (10,2,'test11'), (11,2,'test11'), (12,2,'test22'), (13,2,'test22'), (14,2,'test22'), (15,2,'test33'), (16,2,'test33'), (17,2,'test33'), (18,2,'test33'); INSERT INTO test VALUES (200,200,'200test_nagios');
解答:
SELECT id, cid, author FROM ( SELECT a.id, a.cid, a.author, CASE WHEN a.cid =@cid AND a.author =@aut THEN @x :=@x + 1 ELSE @x := 1 END AS 'tmp' ,@cid := a.cid ,@aut := a.author, @x AS r FROM test a, ( SELECT @x := 1 ,@cid := '' ,@aut := '' ) b ORDER BY a.cid,a.author ) tmp WHERE r <= 2
相关文章推荐
- 将MySQL 5.1升级到MySQL 5.5的步骤
- mysql中的数据类型
- 学习mysql细节整理(一)
- mysql中IN和EXITS效率
- mysql use mysql hang
- MySQL 5.6.19编译安装详细步骤
- MySQL 加锁处理分析
- mysql 创建表并设置主键自增
- (一)一个问题引入:mysql数据库优化
- ubuntu 安装mysql, 以及全然又一次安装的方法
- 安装完 MySQL 后必须调整的 10 项配置
- MySQL 语句大全:创建、授权、查询、修改等
- 删除sonar上的项目的残余
- 安装mysql 5.7.11
- MySQL的安装配置
- mysql
- MySQL的保留关键字,使用时尽量避免
- mysql "too many connections" 错误 之 mysql解决方法
- 详解SQL Server如何链接远程MySQL
- 对MySQL的几个错误印象