gpt4 book ai didi

mysql 找到比今天小的最新记录

转载 作者:行者123 更新时间:2023-11-29 16:49:17 27 4
gpt4 key购买 nike

请帮助 MySQL 新手:

我有 2 张 table :

assets

asset_id | description
------------------------
001 | Crate of Laptops
002 | Crate of OhBots
003 | Crate of Spheros


bookings

id | asset_id | start_date | end_date | location
----------------------------------------------------------------------
1 | 001 | 2018/10/01 | 2018/10/10 | Barnet
2 | 001 | 2018/10/12 | 2018/10/15 | Hendon
3 | 002 | 2018/10/01 | 2018/10/10 | Finchley
4 | 001 | 2018/12/01 | 2018/12/04 | Brent

我需要显示开始日期小于今天的每项 Assets 的所有最新预订 - 因此,如果今天的日期是 2018/10/19,它应该为我提供预订 ID 的详细信息:

asset_id     |       location
------------------------------
001 | Hendon
002 | Finchley

到目前为止,我有这个,但它没有显示最新的预订 - 它显示了所有预订。我认为我需要使用 MAX() 的子查询,但无法使其工作。有很多关于如何从表中获取最新值的帖子,但我还需要 start_date 是过去的日期。

SELECT asset.asset_id, asset.description, booking.location, booking.start_date
FROM assets AS asset
INNER JOIN bookings AS booking
ON asset.asset_id=booking.asset_id
WHERE booking.start_date <= NOW()
ORDER BY asset.asset_id DESC;

最佳答案

您是正确的,您需要使用 MAX() 来查找子查询中每个 Assets 的最大开始日期,然后需要将其连接回 booking表查找其他对应信息。

SELECT a.id, a.description, b.start_date, b.location
FROM assets a
INNER JOIN bookings b ON (a.id = b.asset_id)
INNER JOIN (
SELECT b.asset_id, MAX(b.start_date) AS start_date
FROM bookings b
WHERE b.start_date < CURDATE()
GROUP BY b.asset_id
) c ON (b.asset_id = c.asset_id AND b.start_date = c.start_date)

这是一个工作数据库 fiddle :https://www.db-fiddle.com/f/mci3TkZpZxKcJckWNVHrBK/0

关于mysql 找到比今天小的最新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52903158/

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