题解 | #网易云音乐推荐(网易校招笔试真题)#

网易云音乐推荐(网易校招笔试真题)

http://www.nowcoder.com/practice/048ed413ac0e4cf4a774b906fc87e0e7

分享一下解题思路,一步步拆解问题

1、 先找出user_id=1的人关注的人的id

select follower_id
from follow
where user_id =1;

2、 查找关注人喜欢的音乐名

select m2.music_name
from music_likes m1
join music m2 on m1.music_id=m2.id
where m1.user_id in(select follower_id
                    from follow
                    where user_id =1)

3、 查找user_id=1的用户已经喜欢的音乐名

select music_name
from music_likes m3
join music m4 on m3.music_id=m4.id
where m3.user_id=1;

4、在关注人喜欢的音乐当中去除用户已经喜欢的音乐,由于distinct与order by 一起用貌似不行,所以咱们再查询一边就行。

select a.music_name
from(
    select distinct m2.music_name,m2.id
    from music_likes m1
    join music m2 on m1.music_id=m2.id
    where m1.user_id in(select follower_id
                        from follow
                        where user_id =1)
    and m2.music_name not in(select music_name
                             from music_likes m3
                             join music m4 on m3.music_id=m4.id
                             where m3.user_id=1)) a
order by a.id;

最后附上通过图

alt

全部评论

相关推荐

秋招投简历提醒助手:个人经验是,一般面二十场左右就会进入侃侃而谈阶段。我今年七月末的时候开始的第一次面试,都是很多不会,回复很慢。后面慢慢迭代,到九月中的时候基本上面啥说啥,很放松的状态
远程面试的尴尬瞬间
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务