Mysql 将3个选项压缩为一个表
这三种说法(为简单起见有点做作)是: 我想做两件事:Mysql 将3个选项压缩为一个表,mysql,Mysql,这三种说法(为简单起见有点做作)是: 我想做两件事: 将以上三个连接到一个ID表中,该ID表与电影的所有三个ID都匹配 执行所有这些查询以减少MySQL读取以提高性能 我相信有一个简单的方法可以做到这一点,但我不是最强的SQL用户,所以感谢所有的帮助 Select count(distinct movie_ID), user_ID from table where move_Id in (1,2,3) group by user_ID Having count(distinct Movie_I
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
这样做的目的是获得每个用户ID的不同电影计数。然后将结果限制为仅计数为3的用户。我认为最简单的方法是:
SELECT user_id FROM table_name WHERE movie_id IN (1,2,3);
或者,您可以使用xQbert建议的UNION方法,但我会运行EXPLAIN查询,以查看哪个SQL语句提供了最有效的结果。我的理解是,在替换多个OR的情况下,在我的情况下,他们需要拥有所有的影片抱歉,在原始请求中不清楚。我已经修改了查询,以统计每个用户电影ID的不同出现次数。如果您可以保证一个用户与一个电影ID只有0或1个关联,并且只有0和1个关联,那么您就不需要该地区了。您可以解释解释查询吗?请参阅MYSQL参考手册中的解释:
SELECT user_id FROM table_name WHERE movie_id IN (1,2,3);