【发布时间】:2020-06-04 22:46:45
【问题描述】:
我有以下 2 个表:
create table Director (
id_director int,
name varchar(255),
primary key (id_director)
);
create table Movies (
id_movie int,
id_director int,
title varchar(255),
year int,
primary key (id_movie),
foreign key (id_director) references Director (id_director)
);
已在此表中插入了一些数据。想象一下数据是:
表导演
id_director name
-------------------------
1 Charles
2 Jack
3 Katia
4 David
桌面电影
id_movie id_director title year
------------------------------------------------
1 2 title1 1999
2 1 title2 2011
3 1 title3 2019
4 3 title4 2019
5 4 title5 1968
6 3 title6 2020
7 2 title7 1977
8 4 title8 2004
9 1 title9 2020
我想执行 SELECT 子句,以过滤导演认为它是 2019 年以来的第一部电影。请注意示例中只有 id_director = 3 的导演符合要求,因为他制作了 2 部电影,其中一部2019 年,另一个是 2020 年。
我该怎么做?
我想得到的输出是:
id_director name
------------------------------
3 Katia
这个我试过了,但是很明显是错的,因为有些directors在2019年之前拍过电影,2019年以后也拍过。
select director.id_director, director.name from director, movies
where director.id_director = movie.id_director and year = 2019
group by (name);
我正在使用 MySQL,我想我可以使用 IN / NOT IN 子查询来做到这一点(但是如何)?
【问题讨论】:
-
标记您正在使用的 DBMS。