LeetCode-1264. 页面推荐(中等)
朋友关系列表: Friendship
+---------------+---------+
| Column Name | Type |
+---------------+---------+
| user1_id | int |
| user2_id | int |
+---------------+---------+
这张表的主键是 (user1_id, user2_id)。
这张表的每一行代表着 user1_id 和 user2_id 之间存在着朋友关系。
喜欢列表: Likes
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| user_id | int |
| page_id | int |
+-------------+---------+
这张表的主键是 (user_id, page_id)。
这张表的每一行代表着 user_id 喜欢 page_id。
写一段 SQL 向user_id = 1 的用户,推荐其朋友们喜欢的页面。不要推荐该用户已经喜欢的页面。
你返回的结果中不应当包含重复项。
返回结果的格式如下例所示:
Friendship table:
+----------+----------+
| user1_id | user2_id |
+----------+----------+
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 2 | 3 |
| 2 | 4 |
| 2 | 5 |
| 6 | 1 |
+----------+----------+
Likes table:
+---------+---------+
| user_id | page_id |
+---------+---------+
| 1 | 88 |
| 2 | 23 |
| 3 | 24 |
| 4 | 56 |
| 5 | 11 |
| 6 | 33 |
| 2 | 77 |
| 3 | 77 |
| 6 | 88 |
+---------+---------+
Result table:
+------------------+
| recommended_page |
+------------------+
| 23 |
| 24 |
| 56 |
| 33 |
| 77 |
+------------------+
用户1 同 用户2, 3, 4, 6 是朋友关系。
推荐页面为: 页面23 来自于 用户2, 页面24 来自于 用户3, 页面56 来自于 用户3 以及 页面33 来自于 用户6。
页面77 同时被 用户2 和 用户3 推荐。
页面88 没有被推荐,因为 用户1 已经喜欢了它。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/page-recommendations
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
审题:
思考:
先筛选两次user_id,把2、3、4、6号伙伴筛选出来后,排除6号伙伴喜欢的88号。
解题:
select distinct page_id as recommended_page
from Likes,friendship
where page_id
not in
(select page_id from likes where user_id=1)
and
( user_id in (select user1_id from friendship where user2_id=1)
or
user_id in (select user2_id from friendship where user1_id=1));
方法二:
SELECT DISTINCT(page_id) AS recommended_page
FROM Likes
WHERE (user_id IN (SELECT user2_idFROM FriendshipWHERE user1_id = 1
) OR user_id IN (SELECT user1_idFROM FriendshipWHERE user2_id = 1
))
AND page_id NOT IN (SELECT page_id AS liked_ids FROM LikesWHERE user_id = 1
知识点:
LeetCode-1264. 页面推荐(中等)相关推荐
- Leetcode力扣 MySQL数据库 1264 页面推荐
1264 页面推荐 SQL架构 Create table If Not Exists Friendship_1264 (user1_id int, user2_id int); Create tabl ...
- LeetCode MySQL 1264. 页面推荐(union)
文章目录 1. 题目 2. 解题 1. 题目 朋友关系列表: Friendship +---------------+---------+ | Column Name | Type | +------ ...
- 【每日SQL打卡】DAY 22丨页面推荐【难度中等】
[未来的你,会感谢今天努力的你]每日两题,一难一易,每天进步一点点,可能会直接导致一场面试的成功,或工作的轻松搞定,从而升职加薪迎娶白富美,加油小伙伴!
- LeetCode hot-100 简单and中等难度,61-70.
207. 课程表 难度中等520 你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 . 在选修某些课程之前需要一些先修课程. 例如,想要学习课程 0 ,你需要先完成 ...
- LeetCode hot-100 简单and中等难度,81-90.
打家劫舍系列题 198. 打家劫舍 难度简单1005收藏分享切换为英文关注反馈 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防 ...
- LeetCode hot-100 简单and中等难度,71-80.
279. 完全平方数 难度中等538收藏分享切换为英文关注反馈 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少 ...
- LeetCode hot-100 简单and中等难度,91-100.
461. 汉明距离 难度简单307收藏分享切换为英文关注反馈 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目. 给出两个整数 x 和 y,计算它们之间的汉明距离. 注意: 0 ≤ ...
- LeetCode hot-100 简单and中等难度,51-60.
142. 环形链表 II 难度中等570收藏分享切换为英文关注反馈 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示 ...
- LeetCode hot-100 简单and中等难度,41-50.
102. 二叉树的层序遍历 难度中等589收藏分享切换为英文关注反馈 给你一个二叉树,请你返回其按 层序遍历 得到的节点值. (即逐层地,从左到右访问所有节点). 示例: 二叉树:[3,9,20,nu ...
最新文章
- 直播 | DPDK中国技术峰会2017
- 使用selenium设置firefox不加载图片增加加载速度提高爬虫效率
- c 服务器通信和文件传输,服务器、终端和文件传输方法
- mysql parameters_MySqlCommand Command.Parameters.Add已过时
- JavaScript复习使用定时器的简易式诸葛大力轮播图
- 软件测试实训平台 文档,软件测试实训-20210322233101.docx-原创力文档
- chrome配置文件校验初始化隐含參数的逆向
- 收集五款常用的HTML编辑软件
- 与锤子手机HR的对话——创业没有联合创始人,CTO 等高管会把它当做自己的事业吗?...
- ACS高级计算机科学,2018-2019澳洲八大ACS认证学位全盘点!③
- 六爪机器人_六爪机器人
- 自搭ngrok服务器
- HTTP长连接,短链接,持久连接的区别
- dbk-5/Empf/CEE/O/M30技术文章dbk-5/Sender/M30/k1
- php两个手机号正则表达式_php 手机号码验证正则表达式
- python计算机视觉--基于BOW模型的图像检索
- Android Audio - 支持多应用同时录音_Android8.1修改方法
- com.android.camera.action.CROP照片剪辑的问题
- Linux 网络设备驱动(dm9000)
- 计算机备份与恢复教案,15数据备份与恢复(教案)