3

クエリ:

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

しかし、私は得る:

1064-SQL構文にエラーがあります。id_user1行目の「INTERSECTSELECTFROMRating Where id_movie= 3 LIMIT 0、30」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

解決策はありますか?

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

Intersect, Minus keywords are absent in MySql and the workarounds are

  1. Inner Join, and
  2. Subqueries or
  3. Left Join respectively.

Please look into here

Doing INTERSECT and MINUS in MySQL

I have given a shot (though I am a SQL Server guy)

Input:

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

The output by using an intersect (if run in SQL Server) will be

id_user
102
110

MySQL compatible queries

Query 1 using Inner 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

Query 2 using Cross 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

Query 3 using subquery

Already answered above.

于 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;

ここでの考え方は、同じユーザーが映画2と3を見た、評価の別の行と評価の行を結合することです。

于 2009-12-10T02:35:17.340 に答える