【问题标题】:How can I query my queried table so that it only returns the most recent如何查询我的查询表,以便它只返回最新的
【发布时间】:2019-11-10 23:08:49
【问题描述】:

在 MySQL 中,我查询了连接 3 个表(电影表、库存表和租赁表)得到以下结果:

film_id | title    | inventory_id | store_id | rental_ date | return_date
1       | Dinosaur | 1            | 1        | 2018-08-01   | 2018-08-7
1       | Dinosaur | 1            | 1        | 2018-09-01   | 2018-09-12
1       | Dinosaur | 1            | 1        | 2019-10-12   | 2018-10-17
1       | Dinosaur | 2            | 1        | 2019-10-01   | 2018-10-18
1       | Dinosaur | 2            | 1        | 2018-12-01   | 2018-12-7
1       | Dinosaur | 3            | 1        | 2019-02-01   | 2018-02-16

如何查询我的查询表,以便它只返回每个inventory_id 的最新return_date,这样我就没有不必要的数据(同一部电影之前签入和签出的日期)?

【问题讨论】:

标签: mysql join


【解决方案1】:

从您当前查询的结果来看,很明显您使用的是MySQL Sakila sample database

我认为您当前的查询是:

select
    f.film_id,
    f.title,
    i.inventory_id,
    i.store_id,
    r.rental_date,
    r.return_date
from film f
inner join inventory i 
    on i.film_id = f.film_id
inner join rental r 
    on r.inventory_id = i.inventory_id

要过滤每个inventory_id 中最近的return_date,您可以使用相关子查询,如下所示:

select
    f.film_id,
    f.title,
    i.inventory_id,
    i.store_id,
    r.rental_date,
    r.return_date
from film f
inner join inventory i 
    on i.film_id = f.film_id
inner join rental r 
    on  r.inventory_id = i.inventory_id
    and r.return_date = (
        select max(r1.return_date)
        from rental r1 
        where on r1.inventory_id = r.inventory_id
    )

【讨论】:

    猜你喜欢
    • 2020-05-08
    • 2014-02-15
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 2023-04-03
    • 2015-06-03
    相关资源
    最近更新 更多