使用sakila数据库编写查询

时间:2016-02-17 16:55:32

标签: mysql sql

我正在编写一个查询,为从未出现在电影评级为“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');

2 个答案:

答案 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 “);