我有一张有两列的表:演员和电影,如下所示:
ACTOR | MOVIE
-------+-------------
Volta | Pulp Fiction
Bruce | Pulp Fiction
Rhame | Pulp Fiction
Walke | Pulp Fiction
Rhame | Bad Movie
Bruce | Bad Movie
Volta | Decent Movie
Brian | Decent Movie
Walke | Awesome Movie
Brian | Awesome Movie我想知道哪些演员,谁曾出现在纸浆小说,从来没有出现在另一部电影与另一个演员从纸浆小说。
从这个例子中,输出应该是:
Volta
Walke因为他们分别出现在纸浆小说和体面电影和可怕的电影,没有任何其他演员从纸浆小说。
我在用MySQL。
发布于 2013-10-02 13:14:05
SELECT m.actor
FROM movies m
WHERE
m.movie = 'Pulp Fiction'
AND NOT EXISTS
(
SELECT 1
FROM movies m1
JOIN movies m2 ON m1.movie = m2.movie
AND m1.actor <> m2.actor
AND m2.movie <> 'Pulp Fiction'
AND m2.actor IN (SELECT actor FROM movies WHERE movie = 'Pulp Fiction')
WHERE
m.actor = m1.actor
)根据SQLFiddle的ChrisProsser所做的,它应该给出适当的结果。
发布于 2013-10-02 13:01:28
也许有一种更简单的方法,但这应该是可行的:
select m.actor
from movies m
where m.movie = 'Pulp Fiction'
and m.actor not in (
select m2.actor
from movies m1,
movies m2,
movies m3
where m1.actor = m2.actor
and m1.movie = 'Pulp Fiction'
and m2.movie != m1.movie
and m3.movie = m2.movie
and m3.actor in (select m4.actor
from movies m4
where m4.movie = 'Pulp Fiction')
group by m2.actor
having count(*) > 1);我创建了一个SQL Fiddle来测试这一点,并且输出是正确的。
发布于 2013-10-02 13:42:16
试试这个..。
SELECT actor, movie
FROM actor
where movie like 'Pulp Fiction' AND
movie NOT IN(select movie from tablename t where t.actor like actor and movie NOT LIKE 'Pulp Fiction');https://stackoverflow.com/questions/19136641
复制相似问题