`
.Aky.
  • 浏览: 32370 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

MySQL 获取所有分类和每个分类的前几条记录

 
阅读更多

比如有文章表 Article(Id,Category,InsertDate)

现在要用SQL找出每种类型中时间最新的前N个数据组成的集合

SELECT A1.*
FROM Article AS A1
	INNER JOIN (SELECT A.Category,A.InsertDate
		FROM Article AS A
		LEFT JOIN Article AS B
		ON A.Category = B.Category
		AND A.InsertDate <= B.InsertDate
		GROUP BY A.Category,A.InsertDate
		HAVING COUNT(B.InsertDate) <= @N
	) AS B1
ON A1.Category = B1.Category
AND A1.InsertDate = B1.InsertDate
ORDER BY A1.Category,A1.InsertDate DESC

 

ps:  @N 就是要取多少条

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    MySQL获取所有分类的前N条记录

    在MySQL数据库中,获取每个分类的前N条记录是一个常见的查询需求,特别是在处理如文章、商品、用户等分组信息时。以下将详细介绍如何通过SQL语句实现这一功能,并给出三个示例。 首先,我们需要理解基本的SQL语法,...

    mysql分组取每组前几条记录(排名) 附group by与order by的研究

    –按某一字段分组取最大(小)值所在行的数据 代码如下: /* 数据如下: nameval memo a 2 a2(a的第二个值) a 1 a1–a的第一个值 a 3 a3:a的第三个值 b 1 b1–b的第一个值 b 3 b3:b的第三个值 b 2 b2b2b2b2 b 4 b4b4 b ...

    MySql实现分组取n条最大记录.txt

    2. 使用变量`@r`来为每一行分配一个行号(`rnum`),以便于后续筛选出每个分组内的前几条记录。 3. 使用子查询来统计每个分组内符合条件的行数,并与当前行的行号进行比较,从而筛选出所需的记录。 #### 步骤三:...

    mysql使用GROUP BY分组实现取前N条记录的方法

    总结来说,MySQL中的GROUP BY分组功能不仅限于简单的聚合计算,还可以配合其他查询语句,如JOIN、HAVING和子查询,实现更复杂的查询需求,如获取每个分组的前N条记录。在处理这类问题时,理解并熟练运用这些技巧将有...

    MySql分组后随机获取每组一条数据的操作

    在MySQL数据库中,有时我们需要对数据进行分组处理,并从每个分组中随机选取一条记录。这在统计分析或者抽样调查等场景中非常常见。本文将详细介绍如何在MySQL中实现这一操作,以及一些关于随机选取数据的优化方法。...

    MySQL 查询某个字段不重复的所有记录

    这是正确的做法,因为每组中最小的`id`通常是第一条记录。对应的SQL语句如下: ```sql SELECT a.* FROM book a RIGHT JOIN ( SELECT MIN(id) id FROM book GROUP BY title ) b ON b.id = a.id WHERE a.id ...

    易语言Mysql记录集查看工具

    工具会解析这些数据,将其按照表格的形式在窗口中展示出来,包括字段名、记录条数以及每条记录的详细内容。 该工具可能包含以下几个关键知识点: 1. **Mysql连接**:了解如何在易语言中建立与Mysql服务器的连接,...

    Mysql如何查询某条记录在分页的第几页详析

    假设每页有`pageSize`条记录,那么页码`pageNum`可以通过以下Java代码计算: ```java int pageSize = 10; int count = 11; // 假设上面查出的记录数 int pageNum = count / pageSize + (count % pageSize == 0 ? 0 ...

    android listview从mysql加载数据和图片

    例如,我们可以设计一个GET请求来获取数据库中的数据,该请求可能返回JSON格式的数据,包含每条记录的文本信息和对应的图片URL。 在Android客户端,我们需要使用HTTP库(如Volley或Retrofit)来发送网络请求,获取...

    mysql Join使用以及优化

    在没有索引或者索引设计不合理的情况下,Join操作可能退化为嵌套循环,即每个表中的记录都需要与另一个表中的每条记录进行比较,从而产生大量的I/O操作,增加查询时间。 在设计Join查询时,通常希望驱动表(即在...

    Mysql查询最近一条记录的sql语句(优化篇)

    对于需要批量查询多个用户最近记录的情况,例如获取所有用户的最新订单,每个用户都要执行一次完整的表扫描,效率极低。 接下来,我们可以使用`GROUP BY`来优化查询。首先,对数据进行排序,然后按用户ID分组,返回...

    java和mysql的分页程序

    LIMIT用于指定每页显示的记录数,OFFSET用于跳过前n条记录,达到分页效果。例如: ```sql SELECT * FROM table LIMIT pageSize OFFSET (pageNumber - 1) * pageSize; ``` 其中,pageNumber是当前页码,pageSize...

    SpringBoot定时任务实现Oracle和mysql数据同步

    - **增量同步**:只同步自上次同步以来发生变化的数据,这需要在数据库中记录每个数据的最后修改时间。 - **全量同步**:每次同步都获取全部数据,适合于数据量不大或者初始同步的情况。 - **异步处理**:为了避免...

    一个mysql的vc远程查询程序

    之后,利用`mysql_fetch_row`函数循环遍历查询结果,并打印出每一条记录的信息。 ### 8. 权限授予 在代码的注释部分提到了关于MySQL用户权限的授予命令。例如,如果希望某个用户能够在任何地方连接到MySQL服务器,...

    C连接mysql例子

    - 使用`printf`函数输出每条记录的信息。 ##### 9. 清理资源 ```c mysql_free_result(res); mysql_close(sock); ``` - `mysql_free_result`释放结果集所占用的内存。 - `mysql_close`关闭数据库连接。 #### 总结 ...

    C操作mysql demo

    接下来定义了几个MySQL相关的结构体变量,用于存储数据库连接、结果集及每条记录的信息。 ```c MYSQL my_connection; MYSQL_RES *res_ptr; MYSQL_ROW sqlrow; ``` ### 主函数实现 #### 初始化MySQL连接对象 在`...

    mysql++ v3.2.0 文档

    MySQL++ 是 MySQL 数据库的一个 C++ 接口封装,它为程序员提供了更加方便的数据库...文档中的每个部分都通过具体的示例代码和解释来帮助读者更好地理解和运用 MySQL++ 的特性,从而在实际开发中提高效率和代码质量。

    MySQLpager

    例如,如果我们每页显示10条记录,要获取第2页的数据,SQL查询可能会写成这样: ```sql SELECT * FROM table_name LIMIT 10 OFFSET 10; ``` 这里的`OFFSET 10`表示跳过前10条记录,然后`LIMIT 10`表示取接下来的10...

Global site tag (gtag.js) - Google Analytics