首页 > 解决方案 > 根据其在mySql中的当前状态选择id

问题描述

我有一个名为Transport_status的表,它存储学生的交通状态数据。

                 **Transport_Status** 

+------------+------------------+---------------------+
| student_id | transport_status | date                |
+------------+------------------+---------------------+
|          1 |                1 | 2018-07-03 14:37:53 |
|          1 |                0 | 2018-07-03 17:05:17 |
+------------+------------------+---------------------+

此处 transport_status = 1 表示学生当前正在使用交通设施,而 transport_status = 0 表示学生已离开交通设施。

我必须获取当前正在使用交通工具的 student_id...

我使用了“ Select * from transport_status where transport_status=1; ”,但是我得到了 student_id 1 作为查询的结果,但是你可以看到 student_id 1 没有交通设施了。

我必须选择最新的 transport_status 条目为 1 的 student_id。

帮助!

标签: mysql

解决方案


您可以使用自加入来获取每个学生的最新行,然后检查最新行是否将 transport_status 设置为 1

select a.*
from transport_status a
join (
    select student_id, max(date) date
    from transport_status  
    group by student_id 
) b on a.student_id = b.student_id and a.date = b.date
where a.transport_status = 1

推荐阅读