一种MySQL 分类查询方法

本文介绍了一种优化的MySQL查询方法,用于一次性获取不同分类下的指定排序前N条数据,避免了多次数据库查询。通过创建示例表、插入数据,展示如何查询每个分类按ctime逆序的前2条记录,并在Java代码中进一步处理,以减少数据库交互提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开发过程中,经常会遇到需要对不同的分类情况下获取相应分类下制定排序的前N条数据。一种比较慢的办法是先查询总共有几个分类,然后根据分类id再去获取前N条数据,这样一共需要进行1+N次数据库查询。这里给出一种,可以只根据一条MySQL语句查询,然后把查询结果在JAVA代码中进行处理获取需要的结果。

举个栗子:

1、 创建表 tb_info

create table tb_info(
`id` bigint unsigned not null AUTO_INCREMENT,
`sort_id` int unsigned not null default 0 comment '分类id',
`sort_name` varchar(255) not null default '' comment '分类名称',
`value` varchar(255) not null default '' comment '信息字段',
`ctime` bigint unsigned not null default 0 comment '创建时间',
PRIMARY KEY (`id`)
) Engine = InnoDB default charset=UTF8 comment '信息表';

2、插入数据

insert into tb_info (`sort_id`, `sort_name`, `value`, `ctime`) values(1, "分类1",  "111", 11), (1, "分类1", "123", 10),(1, "分类1", "2323", 12),(2, "分类2", "3333", 123),(2, "分类2", "3334", 45), (3, "分类3", "4456", 87);

3、查询每个分类根

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值