gpt4 book ai didi

MySQL查询以查找仍在房间内的用户

转载 作者:太空宇宙 更新时间:2023-11-03 11:51:30 25 4
gpt4 key购买 nike

下面是我的数据库表,我将在其中记录参加 session 室的签到和 checkout 条目记录。

id  registration_id roomno day type
1 101 1 2 In
2 103 1 2 In
3 101 1 2 Out
4 105 1 2 In
5 103 1 2 Out
6 101 1 2 In
7 103 1 2 In
8 101 1 2 Out
9 105 1 2 In
10 103 1 2 Out

现在,我想选择那些仍在参加 session 的记录。条件就像他们的最后一条记录应该是 type = In。每个用户在一天内可以有多个进/出条目。

请告诉我最快的 MySQL 查询。

谢谢

我最终使用的答案:

select * from `registrations_inouts` t 
group by t.registration_id
having max(id) = max(case when type = 'In' then id end)
order by rand() limit 1;

最佳答案

这是一种使用不存在的方法:

select *
from t
where t.type = 'In' and
not exists (select 1
from t t2
where t2.registration_id = t.registration_id and t2.type = 'Out'
);

另一种方法使用条件聚合:

select t.registration_id
from t
group by t.registration_id
having max(id) = max(case when type = 'In' then id end);

注意:这两者都假设 id 是按时间顺序分配的,因此较大的 id 在时间上较晚。

关于MySQL查询以查找仍在房间内的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35371105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com