簡體   English   中英

MySQL按最后記錄的日期過濾

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM