[英]MySQL filter by date of last record
我有兩個具有以下結構的表:
Table items:
- id (int)
Table item_events:
- item_id (int)
- created_at (DateTime)
每個項目可以有零個,一個或多個item_events。 我需要找到所有最后一個 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');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.