【问题标题】:Select id based on its current status in mySql根据其在mySql中的当前状态选择id
【发布时间】:2018-07-03 23:38:50
【问题描述】:

我有一个名为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。

救命!

【问题讨论】:

  • 当说“当前:你的意思是上次日期??
  • 传输状态的数据类型是什么?如果它不是 int 你应该用引号括起来
  • 当前状态是指这里student_id的当前状态为0,所以不应该在有交通设施的学生列表中。

标签: mysql


【解决方案1】:

您可以使用自联接获取每个学生的最新行,然后检查最新行是否将 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

【讨论】:

  • 大声笑...我同时发布了相同的内容:) +1 和删除我的
  • @AnkitJaishwal 连接部分收集每个学生的最大日期,然后使用 student_id 重新加入同一个表,并且只有日期最大的行,因此结果将是每个学生的单个最新行,然后您可以检查符合您的标准
猜你喜欢
  • 1970-01-01
  • 2017-07-18
  • 2019-10-01
  • 1970-01-01
  • 2019-08-29
  • 2015-04-02
  • 1970-01-01
  • 2023-01-22
  • 1970-01-01
相关资源
最近更新 更多