`
kenby
  • 浏览: 724580 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL分组排序求Top N

 
阅读更多

表结构

 

按照grp分组,按照num排序,每组取Top 3,输出结果如下:



 

 

源代码:

SELECT * FROM score AS t3 
WHERE ( 
	SELECT COUNT(*) FROM score AS t1 
	LEFT JOIN score AS t2 
	ON t1.grp = t2.grp AND t1.num < t2.num 
	WHERE t1.id = t3.id
) < 3
ORDER BY t3.grp ASC, num DESC

 

在where中可以通过子查询创造一个新的变量来过滤。


 

  • 大小: 45.5 KB
  • 大小: 28.8 KB
分享到:
评论

相关推荐

    详解MySQL分组排序求Top N

    MySQL分组排序求Top N是数据库查询中一种常见的需求,特别是在数据分析、报表生成或数据挖掘等场景中。本文将深入探讨这一主题,帮助你理解如何在MySQL中有效地实现这一功能。 首先,我们要明白分组(GROUP BY)和...

    MySQL命令大全

    MYSQL常用命令 1.导出整个数据库 mysqldump -u 用名 -p –default-character-set=latin1 数据库名 &gt; 导出的文件名(数据库默认编码是latin1) mysqldump -u wcnc -p smgp_apps_wcnc &gt; wcnc.sql 2.导出一个表 ...

    MySql_增删改查语句

    WHERE &lt;列名&gt; IN (&lt;值1&gt;, &lt;值2&gt;, ..., &lt;值n&gt;); ``` 例如,查询地址在北京、上海或天津的学生姓名: ```sql SELECT SName AS 学员姓名 FROM Students WHERE SAddress IN ('北京', '上海', '天津') ORDER BY ...

    Mysql查询语句优化技巧

    9. **排序和分组优化**:在`ORDER BY`和`GROUP BY`语句中,尽量使用已建立索引的列,否则可能会触发临时表和文件排序,降低性能。 10. **使用连接优化**:优化JOIN操作,确保连接条件基于索引字段,避免笛卡尔积和...

    MySql数据库中Select用法小结

    4. **按百分比筛选**:使用TOP N PERCENT返回前N%的记录,例如: ```sql SELECT TOP 30 PERCENT * FROM table; ``` 5. **排序**:使用ORDER BY进行升序(ASC)或降序(DESC)排序,例如: ```sql SELECT * ...

    数据库基础知识(经典的常用T-sql语句)

    在DB2中,还有`RANK()`、`ROW_NUMBER()`和`DENSE_RANK()`等OLAP函数,它们提供了更灵活的排序和分组方式。 总的来说,数据库的基本操作是任何IT从业者都需要掌握的基础技能。了解并熟练运用这些T-SQL语句,将有助于...

    超有用sql笔记总结

    - `SELECT TOP n * FROM 表名` 是SQL Server中获取前n行数据的命令,这里的n是你要取的行数。 - 对于MySQL或PostgreSQL,可以使用 `LIMIT m, n` 来获取从第m行开始的n行数据,例如 `SELECT * FROM table LIMIT 11,...

    数据库工程师 第8章 关系数据库操作语言SQL.doc

    1. 使用TOP关键字可以限制查询结果的行数,如`TOP n`或`TOP n percent`。 2. INTO关键字配合SELECT语句可以将查询结果保存到新的表中。 3. 使用LIKE操作符进行字符串匹配,结合通配符_%和_进行模糊查询。 4. 对于...

    SQL_select.rar_sql 语法

    SELECT TOP n column1 FROM table_name; ``` 在MySQL中: ``` SELECT column1 FROM table_name LIMIT n; ``` 10. **AS关键字**:用于重命名列或表的别名,使查询更易读: ``` SELECT column1 AS alias1 ...

    SQL必须掌握的基础知识.doc

    在SQL Server中使用`TOP n`,在MySQL中使用`LIMIT m, n`,m是开始位置,n是返回行数。 举例说明,如果有一个名为`NEWS`的新闻表,我们可以这样查询分类为1的所有新闻并按ID降序排列: ```sql SELECT * FROM NEWS ...

    mysqlSQL语法[文].pdf

    - `TOP` 在某些SQL方言中(如SQL Server),用于限制返回的记录数,但在MySQL中,通常使用 `LIMIT`,如:`SELECT * FROM table_name LIMIT n` 获取前n条记录。 这些是MySQL SQL语法的基本知识点,掌握了它们,你...

    SQL查询语句大全.doc

    - **限制返回行数**:`TOP n`或`TOP n PERCENT`限制返回的行数,如`SELECT TOP 2 * FROM testtable`或`SELECT TOP 20 PERCENT * FROM testtable`。 3. **FROM子句** FROM子句指定了查询的表或视图。可以指定多个...

    数据库经典常用查询语句

    SELECT TOP n * FROM 表名; ``` 在MySQL中: ```sql SELECT * FROM 表名 LIMIT n; ``` 以上是数据库查询的基础,但实际应用中,可能还需要涉及索引、视图、存储过程等高级概念。理解并熟练运用这些查询语句,...

    sql语言快速入门版

    - **Select Top N**:选择表中的前N条记录。 - 示例:`SELECT TOP 10 * FROM product;` - **Select Distinct**:选择表中的不同记录。 - 示例:`SELECT DISTINCT producttype2 FROM product;` - **重命名字段**:...

    2009达内SQL学习笔记

    计算次序可以通过圆括号()来明确地分组。不要过分依赖默认计算次序,使用圆括号()没有坏处,它能消除二义性。 and:条件与 如 SELECT prod_id,prod_price,prod_name FROM Products WHERE prod_price‘DELL’ ...

    SQL之数据检索 - MS SQL

    1. **TOP**(在MS SQL中):选取结果集的前N行。例如,显示前5个客户: ```sql SELECT TOP 5 * FROM Customers; ``` 2. **LIMIT**(在某些数据库系统中,如MySQL):限制返回的结果行数。与TOP相似,但语法不同...

Global site tag (gtag.js) - Google Analytics