在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
如何查询查询到的表,以便它只返回每个stock_id的最新return_date,这样我就没有不必要的数据(同一张电影的进出日期)。
答案 0 :(得分:0)
从当前查询的结果来看,很明显您正在使用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
要过滤每个return_date
中最新的inventory_id
,可以使用相关子查询,如下所示:
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
)