一起使用 Having 语句和 In 语句

Using Having statement and In Statement together

这是我的假设 table,(我们称之为 Table 已观看)

MovieID, UserID, Date
---------------------
1        1       June
1        2       June
2        3       July
2        2       August
3        1       August
3        2       August
4        1       August

我想获取所有只有用户 1 或 2 看过的电影。所以,在这种情况下,结果应该是:

MovieID
--------
1
3
4

所以,我想写一个这样的查询,

SELECT MovieID FROM Watched GROUP BY MovieID HAVING ALL UserID in (1,2)

它不起作用。我不确定是否有另一个工作查询与我现在的想法相同。我的想法如下,

  1. 用 MovieID 对所有记录进行分组
  2. 消除除 1 或 2 之外的其他用户的组

正确的做法是什么?

PS:我正在使用 Oracle Database 12c。

Eliminate the groups which has another user than 1 or 2

您走在正确的轨道上,但您不需要 GROUP BY - 您可以改用 DISTINCT。要获得您正在寻找的结果,您可以使用 NOT IN 而不是 HAVING:

SELECT DISTINCT 
    MovieID 
FROM Watched 
WHERE MovieID NOT IN
( SELECT MovieID FROM Watches
WHERE UserID NOT IN (1,2))