with follower_likes as (
    select f.user_id as user_id, ml.music_id as music_id
    from follow as f
    left join  music_likes as ml on ml.user_id = f.follower_id 
    where f.user_id = 1
),

recommend_music as (
    select distinct music.music_name as music_name,
        music.id as music_id  
    from  follower_likes as fl
    left join music_likes as ml on ml.user_id = fl.user_id
    left join music on fl.music_id = music.id
    where fl.music_id not in (
        select music_id 
        from music_likes as ml 
        where ml.user_id = 1
        )
    order by music_id asc
)

select music_name
from recommend_music
#思路:
#建立“关注的人喜欢的音乐”,找到被关注者喜欢的音乐,保留音乐id和使用者id
#建立“推荐音乐表”,其中临时建立表,剔除使用者本身喜欢的音乐,按照音乐id升序排列
#最后输出音乐名字
#坑:
#不能直接剔除喜欢的音乐,要临时建立表剔除
#按照“关注的人喜欢的音乐”建立主查询,不然可能为空
#with中间使用,连接
#这一题逻辑通畅,时间也不长,但是通过用例用了好久,主要是还是理论不扎实,还是要优化逻辑