SQL查询IMDB数据库:如何显示Kevin Bacon合作演员并排除本人?
解决方法
直接在你的查询语句最外层的WHERE条件里,加上排除特定Kevin Bacon的过滤规则就行,有两种简单的实现方式:
方式一:通过ID排除(更准确)
利用你已经写的子查询定位目标Kevin Bacon的ID,直接排除该ID:
SELECT name FROM people WHERE id IN (SELECT DISTINCT person_id FROM stars WHERE movie_id IN (SELECT movie_id FROM stars WHERE person_id IN (SELECT id FROM people WHERE name = "Kevin Bacon" and birth = "1958"))) AND id NOT IN (SELECT id FROM people WHERE name = "Kevin Bacon" and birth = "1958");
方式二:通过姓名+出生年份排除
如果确认姓名加出生年份能唯一定位目标Kevin Bacon,也可以直接在最外层添加该条件:
SELECT name FROM people WHERE id IN (SELECT DISTINCT person_id FROM stars WHERE movie_id IN (SELECT movie_id FROM stars WHERE person_id IN (SELECT id FROM people WHERE name = "Kevin Bacon" and birth = "1958"))) AND NOT (name = "Kevin Bacon" AND birth = "1958");
说明
你的原查询会列出所有参演过1958年生Kevin Bacon电影的演员,自然也包含他本人。通过在最外层添加排除条件,就能把他从结果中移除。用ID排除的方式更稳妥——毕竟理论上可能存在同名同出生年份的人,而ID是数据库中的唯一标识,不会出错。
内容的提问来源于stack exchange,提问作者Scout_vet
相关产品推荐
相关产品推荐

