LeetCode-1264. 页面推荐(中等)

本文详细介绍了一个基于SQL的推荐系统实现过程,通过构建朋友关系表和用户喜欢页面表,利用union all和内连接技巧,筛选出特定用户未关注但其朋友已关注的页面,实现了个性化页面推荐功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/page-recommendations
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

本人思路:
– 1、朋友关系是相互的,所以使用union all(去掉重复的关系)连接两个方向的关系,即包含了所有的关系,构成了临时表temp
– 2、将temp表和likes表内连接,使用条件temp.user2_id =l.user_id,从而知道user1_id的朋友喜欢的界面;
– 3、where中放入筛选的行条件,以及“不要推荐该用户已经喜欢的页面”注意要使用not in 而不是 !=,因为会有未给出用户喜欢界面的情况

select distinct l.page_id as recommended_page
from(
    select *
    from Friendship 
    union all
    select user2_id as user1_id,user1_id as user2_id
    from Friendship
)temp inner join Likes as l
on temp.user2_id =l.user_id
where temp.user1_id = 1 and page_id not in (select distinct page_id from Likes where user_id = 1)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值