压缩3选择下至一个表

时间:2015-06-13 18:36:46

标签: mysql

这三个陈述(为简单起见有点做作)是:

SELECT `user_id` WHERE `movie_id` = 1
SELECT `user_id` WHERE `movie_id` = 2
SELECT `user_id` WHERE `movie_id` = 3

我想做的是双重的:

  1. 将上述三个加入一个与所有三个movie_id匹配的ID表中
  2. 制作所有这一个查询以减少MySQL读取以加快性能
  3. 我确信有一种简单的方法可以做到,但我不是最强大的SQL用户,所以感谢所有的帮助!

2 个答案:

答案 0 :(得分:2)

Select count(distinct movie_ID), user_ID 
from table where move_Id in (1,2,3)
group by user_ID
Having count(distinct Movie_ID) = 3

这样做是为每个user_ID获取不同的电影数量。然后它将结果限制为只有那些计数为3的用户。

答案 1 :(得分:1)

对我来说最简单的方法似乎是:

SELECT user_id FROM table_name WHERE movie_id IN (1,2,3);

或者你可以使用xQbert建议的UNION方法,但我会运行一个EXPLAIN查询来查看哪个SQL语句提供了最有效的结果。