gpt4 book ai didi

MySQL-获取最近的日期并显示表中的每一行

转载 作者:行者123 更新时间:2023-11-29 22:42:41 25 4
gpt4 key购买 nike

我有 2 张 table - 设备和预订。

设备表如下所示:

ID     NAME
1 termo
2 hydro
3 force
4 hammer

预订表:

ID     EQUIPMENT_ID     START         END
1 2 25.3.2015 26.3.2015
2 2 26.3.2015 27.3.2015
3 1 28.3.2015 29.3.2015
4 3 27.3.2015 28.3.2015

我希望能够打印所有设备以及每台设备当前日期的最近日期。

因此,当日期为 (24.3.2015) 时,输出如下所示:

NAME      START       END
termo 28.3.2015 29.3.2015
hydro 25.3.2015 26.3.2015
force 27.3.2015 28.3.2015
hammer null null

我尝试了一些嵌套查询,但不起作用。我知道要找到距离当前日期最近的 future 日期

SELECT start FROM reservations WHERE start > NOW() ORDER BY start LIMIT 1

但我不知道如何连接表格来查找每个设备的最近日期。有什么想法吗?

最佳答案

我认为相关子查询是最简单的方法。但是,您需要预订表中的三列,因此让我们获取 id 并加入其余部分:

select e.*,
(select r.id
from reservations r
where r.equipment_id = e.id and r.start > now()
order by r.start asc
limit 1
) as next_resid
from equipment e;

连接需要一个子查询:

select e.name, r.start, r.end
from (select e.*,
(select r.id
from reservations r
where r.equipment_id = e.id and r.start > now()
order by r.start asc
limit 1
) as next_resid
from equipment e
) er join
reservations r
on er.next_resid = r.id;

请注意,end 对于列来说不是一个好的名称。虽然它不是 MySQL 保留字,但它是 SQL 关键字。

关于MySQL-获取最近的日期并显示表中的每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29253194/

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