需求
朋友关系列表: 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 的用户,推荐其朋友们喜欢的页面。不要推荐该用户已经喜欢的页面。
你返回的结果中不应当包含重复项。
输入
输出
with t1 as (select case
when user1_id = 1 then user2_id
else user1_id
end as fri_id
from friendship
where user1_id = 1
or user2_id = 1)
select distinct page_id
from t1,
likes
where t1.fri_id = Likes.user_id
and Likes.page_id != (select page_id from likes where user_id = 1)
order by page_id;