要解决这个问题,我们需要考虑几个关键点:数据存储、查询逻辑和结果限制。以下是一个基于关系型数据库(如MySQL)的解决方案,假设我们有一个名为movies
的表,其中包含电影的详细信息,以及一个名为user_watch_history
的表,记录了用户的观看历史。
假设movies
表有以下字段:id
, title
, genre
等;user_watch_history
表有以下字段:user_id
, movie_id
。
SELECT m.id, m.title
FROM movies m
LEFT JOIN user_watch_history uwh ON m.id = uwh.movie_id AND uwh.user_id = [指定用户ID]
WHERE uwh.movie_id IS NULL
LIMIT 20;
movies
表与user_watch_history
表进行左连接,确保所有电影都被考虑,即使某些电影没有被当前用户观看。user_watch_history
表中没有记录的电影ID,即未被用户观看的电影。movie_id
和user_id
上)来优化查询速度。通过这种方式,可以有效地选择所有未被特定用户观看的电影,并将结果限制为20条,适用于多种需要个性化内容推荐的应用场景。
领取专属 10元无门槛券
手把手带您无忧上云