1

我有一个如何从两个表中检索一些数据的问题。

我有表格 Movie 和 Category ,它们看起来像这样,MOVIE 在 MOVIEID 上是 FK:

Movie
-----
_ID TITLE   MOVIEID
-----------------
1   BATMAN    123
2   TWILIGHT  234
3   IRONMAN   345

Category
--------
_ID  TITLE   MOVIE
------------------
1    SCI-FI   123
2    ACTION   123
3    CRIME    123
4    ROMANCE  234
5    SCI-FI   234
6    SCI-FI   345
7    ACTION   345

例如,我想从中获得既是 SCI-FI 又是动作的电影。在我加入 MOVIEID = MOVIE 上的表格后:

BATMAN  SCI-FI
BATMAN  ACTION
BATMAN  CRIME
TWILIGHT ROMANCE
TWILIGHT SCI-FI
IRONMAN SCI-FI
IRONMAN ACTION

如何仅从 SCI-FI 和 ACTION(即蝙蝠侠和铁人)的电影中获得 DISTINCT 标题?

4

1 回答 1

0

您可以使用COUNT聚合和HAVING子句来完成此操作:

SELECT M.MovieId, M.Title
FROM Movie M
    JOIN Category C ON M.MovieId = C.Movie
WHERE C.Title IN ('SCI-FI','ACTION')
GROUP BY M.MovieId, M.Title
HAVING COUNT(DISTINCT C.Title) = 2

SQL 小提琴演示

于 2013-05-05T12:32:31.050 回答