SELECT из двух одинаковых таблиц с пересечением

Запрос:

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

но я получаю:

1064 – У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «INTERSECT SELECT id_user FROM Rating». Где id_movie = 3 LIMIT 0, 30 'в строке 1

у любого есть решение?

Следующий запрос будет ..

 SELECT id_user FROM Rating Where id_movie=2 and id_user in ( SELECT id_user FROM Rating Where id_movie=3); 

Пересечение, минус-слова отсутствуют в MySql, и обходные пути

  1. Inner Join и
  2. Подзапросы или
  3. Left Join соответственно.

Пожалуйста, смотрите здесь

Выполнение INTERSECT и MINUS в MySQL

Я дал шанс (хотя я парень 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-совместимые запросы

Запрос 1 с использованием 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 

Запрос 2 с использованием 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 

Запрос 3 с использованием подзапроса

Уже ответил выше.

Как насчет:

 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.