You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MariaDB中查询Joseph入住前的上一位已离开房间人员?

解决方案

假设你的房间进出记录表结构大致如下(如果实际字段名不同,对应替换即可):

CREATE TABLE room_records (
    id INT AUTO_INCREMENT PRIMARY KEY,
    person_name VARCHAR(50) NOT NULL,
    enter_time DATETIME NOT NULL,
    leave_time DATETIME NOT NULL
);

要查询Joseph在2022-04-16 13:55:24进入房间前,最后一位已离开的人员,可以用以下SQL语句:

SELECT person_name, enter_time, leave_time
FROM room_records
WHERE leave_time < '2022-04-16 13:55:24'
ORDER BY leave_time DESC
LIMIT 1;

逻辑拆解

  • WHERE leave_time < '2022-04-16 13:55:24':筛选出所有在Joseph进入房间前就已经完成离开操作的记录
  • ORDER BY leave_time DESC:按离开时间倒序排列,让最近离开的记录排在最前面
  • LIMIT 1:只取排序后的第一条结果,也就是最后一位离开房间的人员

如果需要动态关联Joseph的进入记录(不用硬写时间),可以用子查询先获取他的进入时间:

SELECT r.person_name, r.enter_time, r.leave_time
FROM room_records r
WHERE r.leave_time < (
    SELECT enter_time 
    FROM room_records 
    WHERE person_name = 'Joseph' AND enter_time = '2022-04-16 13:55:24'
)
ORDER BY r.leave_time DESC
LIMIT 1;

额外说明

  • 如果有多人在同一时间离开,LIMIT 1只会返回其中一个,若需要全部返回可去掉该语句
  • 确保enter_time和leave_time字段为DATETIME或TIMESTAMP类型,否则日期比较会失效
  • 如果Joseph是房间的第一位使用者,查询结果会为空,符合业务逻辑

内容的提问来源于stack exchange,提问作者kernel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 11:42:03