[英]SQL - Relationship between actors
我有一個包含2列的單個表:演員和電影,如下所示:
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。
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
)
根據ChrisProsser所做的SQLFiddle,它應該給出正確的結果。
可能有一種更簡單的方法,但這應該有效:
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來測試它,輸出是正確的。
嘗試這個....
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');
SELECT actor FROM table AS t1
WHERE movie = 'Pulp Fiction' AND
NOT EXISTS(
SELECT 1 FROM table AS t2 WHERE t2.actor = t1.actor AND movie <> 'Pulp Fiction'
)
我建議您將電影和演員存儲在不同的表格中(“電影”表和“演員表”),然后使用“movie_actor”表將數據相互連接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.