【网易】推荐关注用户喜欢的音乐
WHERE 条件JOIN 连接子查询ORDER BYDISTINCT用户行为分析面试真题
题目描述
来源:网易 SQL 面试真题
某云音乐产品希望向指定用户推荐其关注对象喜欢的音乐,同时避免推荐该用户已经喜欢的歌曲。
数据表
follow 关注关系表
| 字段 | 类型 | 说明 |
|---|---|---|
| user_id | BIGINT | 发起关注的用户 ID |
| follower_id | BIGINT | 被关注的用户 ID |
user_id 和 follower_id 共同组成主键。例如记录 (1, 2) 表示用户 1 关注用户 2。
music_likes 用户喜欢音乐表
| 字段 | 类型 | 说明 |
|---|---|---|
| user_id | BIGINT | 用户 ID |
| music_id | BIGINT | 用户喜欢的音乐 ID |
user_id 和 music_id 共同组成主键。
music 音乐信息表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | 音乐 ID |
| music_name | VARCHAR | 音乐名称 |
题目要求
- 查询用户 1 关注的所有用户喜欢的音乐。
- 不推荐用户 1 已经喜欢的音乐。
- 推荐结果中不能包含重复歌曲。
- 输出音乐名称,并按音乐 ID 升序排列。
期望输出列
| 列名 | 说明 |
|---|---|
| music_name | 推荐音乐名称 |
数据样例
| user_idPKBIGINT | follower_idPKBIGINT |
|---|---|
| 1 | 2 |
| 1 | 4 |
| 2 | 3 |
输入数据显示 3 / 3 行
SQL 编辑器正在保存草稿...
Ctrl + Enter 运行
正在加载 SQL 编辑器...
运行你的 SQL 查询后,结果将显示在这里