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

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

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

首先想到用联结,但是时间和压力下还是运用子查询将复杂问题分解为小问题。实际数据量大时,子查询的效率比联结效率低,in和exist在面对不同大小的内外表时效率也不同。

select music_name from music 
where id in 
(
    select music_id from music_likes where user_id 
    in (select follower_id from follow where user_id = 1) #找到用户喜爱的用户
    and music_id not in 
    (select music_id from music_likes where user_id = 1) #排除用户已经喜欢的音乐
) 
order by id;


使用连接

select b.music_name from music_likes a left join music b 
on a.music_id = b.id
where a.user_id in
(select follower_id from follow where user_id = 1) 
and 
a.music_id not in
(select music_id from music_likes where user_id = 1)
order by a.music_id asc;
全部评论
结果不对啊
1 回复 分享
发布于 2022-03-17 15:32

相关推荐

2024-11-14 16:18
四川大学 Java
牛6646848154:眼睛有点小,建议P大点
点赞 评论 收藏
分享
2024-11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
评论
5
收藏
分享
牛客网
牛客企业服务