首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >LeetCode MySQL 1264. 页面推荐(union)

LeetCode MySQL 1264. 页面推荐(union)

作者头像
Michael阿明
发布于 2021-02-19 10:29:51
发布于 2021-02-19 10:29:51
8560
举报

文章目录

1. 题目

朋友关系列表: Friendship

代码语言:javascript
复制
+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| user1_id      | int     |
| user2_id      | int     |
+---------------+---------+
这张表的主键是 (user1_id, user2_id)。
这张表的每一行代表着 user1_id 和 user2_id 之间存在着朋友关系。

喜欢列表: Likes

代码语言:javascript
复制
+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| user_id     | int     |
| page_id     | int     |
+-------------+---------+
这张表的主键是 (user_id, page_id)。
这张表的每一行代表着 user_id 喜欢 page_id。

写一段 SQL 向user_id = 1 的用户,推荐其朋友们喜欢的页面。 不要推荐该用户已经喜欢的页面。

你返回的结果中不应当包含重复项。

返回结果的格式如下例所示:

代码语言:javascript
复制
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 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 先找出所有 1 的好友
  • 然后选出好友的页面,并且页面不在 1 的里面
代码语言:javascript
复制
# Write your MySQL query statement below
select distinct page_id recommended_page
from Likes
where user_id in
    (
        (
            select user2_id
            from Friendship
            where user1_id = 1
        ) 
        union
        (
            select user1_id
            from Friendship
            where user2_id = 1
        )
    ) 
and page_id not in
    (
        select page_id
        from Likes
        where user_id = 1
    )
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/07/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 文章目录
  • 1. 题目
  • 2. 解题
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档