`
DreamOne
  • 浏览: 8331 次
文章分类
社区版块
存档分类
最新评论

Mysql group by top N

 
阅读更多
Mysql group by top N的问题(转)
 
   在日常工作中,经常要查询分组的前几名.oracle中可以通过row_num来支持查询,mysql暂时不支持row_num.那么如何来完成这个需求呢?
 
   例如:
 
表中的数据:
 
1
2
3
4
5
6
7
8
9
10
+--------+-------+-----+
| Person | Group | Age |
+--------+-------+-----+
| Bob    | 1     | 32  |
| Jill   | 1     | 34  |
| Shawn  | 1     | 42  |
| Jake   | 2     | 29  |
| Paul   | 2     | 36  |
| Laura  | 2     | 39  |
+--------+-------+-----+

 

期望的结果:
 
1
2
3
4
5
6
+--------+-------+-----+
| Shawn  | 1     | 42  |
| Jill   | 1     | 34  |
| Laura  | 2     | 39  |
| Paul   | 2     | 36  |
+--------+-------+-----+

 

 
   方式一:借鉴oracle中row_num的思想,在sql中增加伪列.
1
2
3
4
5
6
7
8
9
10
11
12
set @num := 0, @group := '';
 
select person, `group`, age
from
(
   select person, `group`, age,
      @num := if(@group = `group`, @num + 1, 1) as row_number,
      @group := `group` as dummy
  from mytable
  order by `Group`, Age desc, person
) as x
where x.row_number <= 2;

 

方式二:利用关联子查询
1
2
3
4
SELECT a.person, a.group, a.age FROM person AS a WHERE
(SELECT COUNT(*) FROM person AS b
WHERE b.group = a.group AND b.age >= a.age) <= 2
ORDER BY a.group ASC, a.age DESC
分享到:
评论

相关推荐

    MySQL命令大全

    mysql&gt; select * from MyClass order by id limit 0,2; 或者: mysql&gt; select * from MyClass limit 0,2; 6、删除表中数据 命令:delete from 表名 where 表达式 例如:删除表 MyClass中编号为 的记录 mysql&gt;...

    MYSQL常用命令大全

    mysql&gt; select * from MyClass order by id limit 0,2; 或者: mysql&gt; select * from MyClass limit 0,2; 6、删除表中数据 命令:delete from 表名 where 表达式 例如:删除表 MyClass中编号为1 的记录 mysql&gt; ...

    数据库多表查询及嵌套查询子查询语句示例

    5.用子查询作派生的表:select 年龄,count(*) as 相同年龄 from (select top 10 年龄 from kjbdsjk order by 编号) as t group by 年龄 6.把子查询作为表达式:select t.职业,t.平均年龄 from (select 职业,avg(年龄)...

    分布式数据仓库Hive大全

    3.1 Group By 28 3.2 Order /Sort By 28 4. Hive Join 29 5. HIVE参数设置 31 6. HIVE UDF 33 6.1 基本函数 33 6.1.1 关系操作符 33 6.1.2 代数操作符 34 6.1.3 逻辑操作符 35 6.1.4 复杂类型操作符 35 6.1.5 内建...

    Hive用户指南

    3.1 Group By 28 3.2 Order /Sort By 28 4. Hive Join 29 5. HIVE参数设置 31 6. HIVE UDF 33 6.1 基本函数 33 6.1.1 关系操作符 33 6.1.2 代数操作符 34 6.1.3 逻辑操作符 35 6.1.4 复杂类型操作符 35 6.1.5 内建...

    Sql for mysql

    CHAPTER 1 Introduction to MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Database, ...

    WordPress Top Plugins.pdf

    Learn by tinkering 19 WordPress plugin API 19 PHP references 19 CSS 19 JavaScript 20 Troubleshooting plugins 20 Editing plugins 21 Summary 22 Table of Contents [ ii ] Chapter 2: Generating ...

    图书馆借阅系统数据库设计

    图书馆借阅系统数据库设计 2.5.1 按借阅表查询历史借阅信息  (用1表示已经归还,0表示未归还) select * from Borrow ... GROUP BY Borrow.Bno order by Borrow.Bno desc )temp where Book.Bno=temp.Bno

    3天从零快速搭建BI商业大数据分析平台视频教程

    4.5 DQL之分组查询group by 4.6 DQL之排序查询order by 4.7 DQL之分页查询limit 4.8 DQL之结果保存 第五章:多表复杂分析查询 5.1 多表查询:表与表之间的关系 5.2 多表查询:Join关联 5.3 多表查询:子查询 第六...

    SQL语句生成及分析器(中文绿色)

    3.4 分组 (Group By) 3.5 组内条件 (Having) 3.6 排序 (Order By) 3.7 数据表的内连接、外连接 3.7.1 SQL 92 标准:Inner Join、Left Join、Right Join、Full Join, 3.7.2 特殊语法:*=、=*、*=*(MS_SQL,...

    sql语句生成与分析器.rar

    3.4 分组 (Group By) 3.5 组内条件 (Having) 3.6 排序 (Order By) 3.7 数据表的内连接、外连接 3.7.1 SQL 92 标准:Inner Join、Left Join、Right Join、Full Join, 3.7.2 特殊语法:*=、=*、*=*(MS_SQL,...

    2009达内SQL学习笔记

    [Group by group_by_expression] [Having group_condition] …… [Order by column]; --最后 三、常用简单语句: clear screen:清屏 edit:编辑刚才的一句。 desc/describe:(列出所有列名称) 用法: ...

    Foundations for Analytics with Python O-Reilly-2016-Clinton W. Brownley

    in Chapter 1 but aren’t used in Chapters 2, 3, and 4. It also introduces another new technique: keeping track of the previous row you processed and the row you’re currently processing, in order to ...

    经典全面的SQL语句大全

    mysql select * From 表名 Order By rand() Limit n  Access左连接语法(最近开发要用左连接,Access帮助什么都没有,网上没有Access的SQL说明,只有自己测试, 现在记下以备后查)  语法 select table1.fd1,table1,fd2,...

    03开源NewSql数据库TiDB-Deep Dive into TiDB

    TopN 下推 Limit 下推 4.提供了索引相关支持 谓词转化聚簇索引范围 谓词转化次级索引 Index Only 查询优化 运行时索引退化扫表优化 5.提供了基于代价优化 统计信息支持 索引选择 广播表代价估算 6.多种 ...

Global site tag (gtag.js) - Google Analytics