gpt4 book ai didi

MySQL按最后记录的日期过滤

转载 作者:行者123 更新时间:2023-11-29 04:38:02 28 4
gpt4 key购买 nike

我有两个具有以下结构的表:

Table items:

- id (int)

Table item_events:

- item_id (int)
- created_at (DateTime)

每个项目都可以有零个、一个或多个 item_events。我需要找到所有 last item_event 是在两个特定日期之间创建的项目。据了解,我已经构建了以下 SQL 查询:

SELECT DISTINCT `items`.* 
FROM `items` INNER JOIN `item_events` ON `items`.`id` = `item_events`.`item_id`
WHERE (item_events.created_at >= '2016-01-01 00:00:00') AND (item_events.created_at <= '2016-01-05 23:59:59');

但是,此查询正在选择在给定日期之间具有 item_event 的任何项目,即使此 item_event 不是与该项目相关的最后一个项目。任何帮助将不胜感激。

最佳答案

您可以使用包含每个 item_id 的最新 created_at 值的派生表:

SELECT `items`.* 
FROM `items`
INNER JOIN (
SELECT `item_id`, MAX(`created_at`) AS `created_at`
FROM `item_events`
GROUP BY `item_id`
) AS `item_events` ON `items`.`id` = `item_events`.`item_id`
WHERE (item_events.created_at >= '2016-01-01 00:00:00') AND
(item_events.created_at <= '2016-01-05 23:59:59');

关于MySQL按最后记录的日期过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36540790/

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