WITH t AS ( SELECT a.music_id, b.music_name FROM ( SELECT DISTINCT music_id FROM music_likes WHERE user_id IN ( SELECT follower_id FROM follow WHERE user_id = 1 ) OR user_id = 1 ) AS a JOIN music AS b ON a.music_id = b.id WHERE a.music_id NOT IN( SELECT music_id FROM music_likes WHERE user_id = 1 ) ) SELECT music_name FROM t ORDER BY music_id ASC
先选出用户自己和他关注的人的喜欢的音乐然后去重再去掉用户自己喜欢的音乐,再和music表连接后排序就好了,感觉自己写的比较麻烦但是懒得改了嘿嘿