# 请你编写一个SQL,查询向user_id = 1 的用户,推荐其关注的人喜欢的音乐。
 # 不要推荐该用户已经喜欢的音乐,并且按music的id升序排列。你返回的结果中不应当包含重复项
 # 思路:
 # 1.先在follow表中查询user_id为1的人关注的用户是谁
 SELECT follower_id
 FROM follow
 WHERE user_id = 1;
 # 1.1 找到user_id为1的用户喜欢的音乐music_id
 SELECT music_id FROM music_likes WHERE user_id = 1;
 # 2.通过上一步查出的用户id关联music_likes表,查看他们喜欢的音乐id是多少,根据1.1查出的music_id
 # 排除user_id喜欢的音乐
 WITH tmp_f_id AS(
     SELECT follower_id
     FROM follow
     WHERE user_id = 1
 )
 SELECT music_id
 FROM tmp_f_id t JOIN music_likes t1 ON t.follower_id = t1.user_id
 WHERE music_id NOT IN (SELECT music_id FROM music_likes WHERE user_id = 1);
# 3.关联music表,不同人喜欢的音乐可能重复所以需要用distinct,展示查询出的结果
WITH tmp_f_id AS (
    SELECT follower_id
    FROM follow
    WHERE user_id = 1
),
     tmp_music_id AS (
         SELECT t1.music_id
         FROM tmp_f_id t
                  JOIN music_likes t1 ON t.follower_id = t1.user_id
         WHERE t1.music_id NOT IN (SELECT music_id
                                FROM music_likes
                                WHERE user_id = 1)
     )
SELECT DISTINCT mn.music_name
FROM tmp_music_id tm
         JOIN music mn ON tm.music_id = mn.id
ORDER BY mn.id;