Mysql语句-查询一张表中每个设备的最近两条记录

本文介绍了一种使用SQL查询特定表中每台机器最近两条记录的方法,通过一个子查询计数每台机器之后的时间记录数量来筛选出所需数据,并按创建时间降序排列。

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

例表:
数据表
建表语句

CREATE TABLE `equipment` (
	`id` INT NOT NULL AUTO_INCREMENT,
	`machine_Id` INT NOT NULL,
	`product_num` INT DEFAULT NULL,
	`create_time` datetime DEFAULT NULL,
	`create_by` VARCHAR ( 255 ) DEFAULT NULL,
PRIMARY KEY ( `id` ) 
) ENGINE = INNODB AUTO_INCREMENT = 8 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;

sql语句:

-- 查询当前表中每台机器最近两条数据
SELECT
	a.* 
FROM
	equipment a 
WHERE
	(
	SELECT
		count(*) 
	FROM
		equipment t 
	WHERE
		t.machine_id = a.machine_id 
		AND t.create_time > a.create_time 
	) < 2
ORDER BY
	a.create_time DESC

执行结果:
在这里插入图片描述
具体思路可以在评论区多多讨论~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值