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

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

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

先使用子查询找到用户1关注的人喜欢的所有音乐
SELECT t.music_id
FROM follow AS t
LEFT JOIN music_likes AS t1
ON t.follower_id = t1.user_id
WHERE t.user_id = 1 

然后和通过where语句筛选掉该用户已经喜欢的音乐
WHERE e.music_id not IN (SELECT music_id FROM music_likes WHERE user_id = 1 )

最后和music表连接找到对应的音乐名称
SELECT DISTINCT n.music_name
FROM
(-- 找出user_1关注的人喜欢的所有音乐
	SELECT t1.music_id
	FROM follow AS t
	LEFT JOIN music_likes AS t1
	ON t.follower_id = t1.user_id
	WHERE t.user_id = 1 
) AS e
JOIN music AS n
ON e.music_id = n.id
WHERE e.music_id not IN (SELECT music_id FROM music_likes WHERE user_id = 1 )
ORDER BY n.id

在牛客现在版本的mysql中不支持order by未被select的列,但是在sqlite中可以正常运行

全部评论

相关推荐

牛客963010790号:为什么还要收藏
点赞 评论 收藏
分享
冷艳的小师弟在看机会:jd测评乱点直接被挂了,哭死~
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务