我目前正在做CS50问题集7,叫做Movies。这是关于SQL的,编写查询来完成每一个任务。有一项任务,我需要列出所有在凯文·培根也主演的电影中主演的人的名字。
这是我的代码:
-- show every actor starred in a movie that Kevin Bacon also starred in WITHOUT appearing Kevin Bacon itself --
SELECT DISTINCT name FROM
movies JOIN stars ON movies.id = stars.movie_id JOIN
people ON stars.person_id = people.id
WHERE movies.id IN (SELECT movie_id FROM stars WHERE person_id IN(SELECT id FROM people WHERE name = "Kevin Bacon" AND birth = 1958));
我几乎成功了。。这将输出177行。总共有177个演员。我已经区分了他们中的每一个。但是结果应该是176行。然后我意识到,正如任务要求的那样,我不应该把凯文·培根自己也包括在名单上。
请帮帮我。这是我第一次玩SQL。如何将凯文·培根从名单中删除?我应该在我的查询代码中添加什么?
发布于 2020-10-08 04:47:35
您必须排除人员的id,spo您还必须从Kevon Bacon获取id并将其排除。
SELECT DISTINCT name FROM
movies JOIN stars ON movies.id = stars.movie_id JOIN
people ON stars.person_id = people.id
WHERE movies.id IN (SELECT movie_id FROM stars WHERE person_id IN(SELECT id FROM people WHERE name = "Kevin Bacon" AND birth = 1958))
AND people.id NOT IN (SELECT id FROM people WHERE name = "Kevin Bacon" AND birth = 1958);
https://stackoverflow.com/questions/64251944
复制相似问题