select music_name from music_likes join music 
on id=music_id
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)
group by id
order by id
1、整体思路,把用户id、音乐id和音乐name通过join链接,然后进行筛选和去重、排序
2、易错点1,一开始总是想着把链接后的表格里面1和1关注的user id选出来就行,其实这是重复操作,而且实际上选出user id关注的id后,进一步需要去重的不是user id<>1,而是和1喜欢重合的music_id
3、易错点2,运行结果发现要么是顺序不对,要么是重复了,而重复第一想到用distinct,但是内部查询对 id 进行排序,但外部查询的 DISTINCT 操作不会保留这个排序。order by的字段必须包含在select中,且distinct对所有select的列作用。所以需要和group by组合使用,达到对id去重和排序的作用