3

查询:

SELECT id_user 
  FROM Rating 
 Where id_movie=2 
INTERSECT 
SELECT id_user 
  FROM Rating 
 Where id_movie=3

但我得到:

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“INTERSECT SELECT id_userFROM Rating Where id_movie=3 LIMIT 0, 30”附近使用正确的语法

有解决办法吗??

4

3 回答 3

5

以下查询会做..

SELECT id_user 
FROM Rating 
Where id_movie=2 and id_user in 
             ( SELECT id_user FROM Rating Where id_movie=3);
于 2009-12-10T02:27:43.000 回答
4

MySql 中没有 Intersect, Minus 关键字,解决方法是

  1. 内连接,和
  2. 子查询或
  3. 分别左加入。

请看这里

在 MySQL 中做 INTERSECT 和 MINUS

我试了一下(虽然我是 SQL Server 人)

输入:

id_user id_movie
101 1
102 2
102 3
104 4
102 5
107 6
102 2
103 3
109 9
110 2
110 3

使用相交(如果在 SQL Server 中运行)的输出将是

id_user
102
110

MySQL 兼容查询

使用查询 1Inner join

select distinct a.id_user
from Rating a
join Rating b on a.id_user = b.id_user
where a.id_movie  = 2 and b.id_movie  = 3

使用查询 2Cross join

select distinct a.id_user 
from Rating a, Rating b 
where a.id_user  = b.id_user 
  and a.id_movie  = 2
  and b.id_movie = 3

使用子查询查询 3

上面已经回答了。

于 2009-12-10T07:22:16.027 回答
2

怎么样:

SELECT r2.id_user
FROM Rating AS r2
   JOIN
   Rating AS r3
   ON r3.id_user = r2.id_user
   AND r2.id_movie=2
   AND r3.id_movie=3;

这里的想法是,您希望将 Rating 中的一行与 Rating 中的另一行连接起来,同一用户已经看过电影 2 和 3。

于 2009-12-10T02:35:17.340 回答