我正在编写一个查询,为从未出现在电影评级为“PG”的所有演员提供演员ID,名字和姓氏。
这就是我所做的。谁能告诉我我做错了什么,好吗?
select distinct actor.actor_id, actor.first_name, actor.last_name
from actor, film, film_actor
where NOT exists
(Select distinct actor.actor_id,actor.first_name,actor.last_name
from actor,film_actor,film
where actor.actor_id = film_actor.actor_id
and film_actor.film_id = film.film_id
and film.rating = 'PG');
答案 0 :(得分:0)
条件的不存在测试以及条件为真(存在)返回false(不存在) 然后在你的情况下你没有得到正确的结果
可能是你需要不在你身边的演员选择
select actor.actor_id, actor.first_name, actor.last_name
from actor
where actor.id NOT in
(Select distinct actor.actor_id
from actor,film_actor,film
where actor.actor_id = film_actor.actor_id
and film_actor.film_id = film.film_id
and film.rating = 'PG');
答案 1 :(得分:0)
从上面的答案开始,嵌套查询中的“actor.actor_id = film_actor.actor_id”行不一定能得到相同的结果。更短的版本:
从actor a中选择不同的a.actor_id,a.first_name,a.last_name,其中actor_id NOT IN(从film_actor fa中选择不同的fa.actor_id,在电影f中选择fa.film_id = f.film_id AND f.rating ='PG “);