题解 | #网易云音乐推荐(网易校招笔试真题)#
网易云音乐推荐(网易校招笔试真题)
https://www.nowcoder.com/practice/048ed413ac0e4cf4a774b906fc87e0e7
思路解释: 首先求出1.被关注的人喜欢的音乐id;2.关注人喜欢的音乐id 然后使用表连接,将上述两个独立的表连接在一起 再使用case when是因为要去除被关注者喜欢音乐id中与关注者重复的部分 这样就求出了上述1和2中不重复的部分,也就是题目中要求的被关注的人喜欢的音乐id中关注人音乐列表中没有的音乐id 最后使用查询出的音乐id作为where查询条件在最后一张表中找到相符的音乐名称即可
select music_name from music where id in (select case when id1=id2 then null else id1 end from (select music_id id1 from music_likes where user_id in (select follower_id from follow where user_id=1)) xin1 #被关注的人喜欢的音乐id left join (select music_id id2 from music_likes where user_id=1) xin2 #关注人喜欢的音乐id on id1=id2) order by id