假设云音乐数据库里面现在有几张如下简化的数据表: 关注follow表,第一列是关注人的id,第二列是被关注人的id,这2列的id组成主键 +———+————-+ | user_id | follower_id | +———+————-+ | 1 | 2 | | 1 | 4 | | 2 | 3 | +———+————-+ 这张表的第一行代表着用户id为1的关注着id为2的用户 这张表的第二行代表着用户id为1的关注着id为4的用户 这张表的第三行代表着用户id为2的关注着id为3的用户 个人的喜欢的音乐music_likes表,第一列是用户id,第二列是喜欢的音乐id,这2列的id组成主键 +———+———-+ | user_id | music_id | +———+———-+ | 1 | 17 | | 2 | 18 | | 2 | 19 | | 3 | 20 | | 4 | 17 | +———+———-+ 这张表的第一行代表着用户id为1的喜欢music_id为17的音乐 …. 这张表的第五行代表着用户id为4的喜欢music_id为17的音乐 音乐music表,第一列是音乐id,第二列是音乐name,id是主键 +—-+————+ | id | music_name | +—-+————+ | 17 | yueyawang | | 18 | kong | | 19 | MOM | | 20 | Sold Out | +—-+————+ 请你编写一个SQL,查询向user_id = 1 的用户,推荐其关注的人喜欢的音乐。 不要推荐该用户已经喜欢的音乐,并且按music的id升序排列。你返回的结果中不应当包含重复项 上面的查询结果如下: +————+ | music_name | +————+ | kong | | MOM | +————+-笔试面试资料
这是qklbishe.com第5369 篇笔试面试资料
提供答案分析,通过本文《假设云音乐数据库里面现在有几张如下简化的数据表:
关注follow表,第一列是关注人的id,第二列是被关注人的id,这2列的id组成主键
+———+————-+ | user_id | follower_id | +———+————-+ | 1 | 2 | | 1 | 4 | | 2 | 3 | +———+————-+
这张表的第一行代表着用户id为1的关注着id为2的用户
这张表的第二行代表着用户id为1的关注着id为4的用户
这张表的第三行代表着用户id为2的关注着id为3的用户
个人的喜欢的音乐music_likes表,第一列是用户id,第二列是喜欢的音乐id,这2列的id组成主键
+———+———-+ | user_id | music_id | +———+———-+ | 1 | 17 | | 2 | 18 | | 2 | 19 | | 3 | 20 | | 4 | 17 | +———+———-+
这张表的第一行代表着用户id为1的喜欢music_id为17的音乐
….
这张表的第五行代表着用户id为4的喜欢music_id为17的音乐
音乐music表,第一列是音乐id,第二列是音乐name,id是主键
+—-+————+ | id | music_name | +—-+————+ | 17 | yueyawang | | 18 | kong | | 19 | MOM | | 20 | Sold Out | +—-+————+
请你编写一个SQL,查询向user_id = 1 的用户,推荐其关注的人喜欢的音乐。
不要推荐该用户已经喜欢的音乐,并且按music的id升序排列。你返回的结果中不应当包含重复项
上面的查询结果如下:
+————+ | music_name | +————+ | kong | | MOM | +————+-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。
答案:
假设云音乐数据库里面现在有几张如下简化的数据表:
关注follow表,第一列是关注人的id,第二列是被关注人的id,这2列的id组成主键
+---------+-------------+ | user_id | follower_id | +---------+-------------+ | 1 | 2 | | 1 | 4 | | 2 | 3 | +---------+-------------+
这张表的第一行代表着用户id为1的关注着id为2的用户
这张表的第二行代表着用户id为1的关注着id为4的用户
这张表的第三行代表着用户id为2的关注着id为3的用户
个人的喜欢的音乐music_likes表,第一列是用户id,第二列是喜欢的音乐id,这2列的id组成主键
+---------+----------+ | user_id | music_id | +---------+----------+ | 1 | 17 | | 2 | 18 | | 2 | 19 | | 3 | 20 | | 4 | 17 | +---------+----------+
这张表的第一行代表着用户id为1的喜欢music_id为17的音乐
….
这张表的第五行代表着用户id为4的喜欢music_id为17的音乐
音乐music表,第一列是音乐id,第二列是音乐name,id是主键
+----+------------+ | id | music_name | +----+------------+ | 17 | yueyawang | | 18 | kong | | 19 | MOM | | 20 | Sold Out | +----+------------+
请你编写一个SQL,查询向user_id = 1 的用户,推荐其关注的人喜欢的音乐。
不要推荐该用户已经喜欢的音乐,并且按music的id升序排列。你返回的结果中不应当包含重复项
上面的查询结果如下:
+------------+ | music_name | +------------+ | kong | | MOM | +------------+
from
(select follower_id
from follow
where user_id=1)a
left join
(select user_id,
music_id
from music_likes)b on a.follower_id =b.user_id
left join
(select music_id
from music_likes
where user_id=1)c on b.music_id=c.music_id
left join
(select id,
music_name
from music)d on b.music_id=d.id
where b.user_id is not NULL
and c.music_id is NULL
order by b.music_id
文章部分来自互联网,侵权联系删除
www.qklbishe.com
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 假设云音乐数据库里面现在有几张如下简化的数据表: 关注follow表,第一列是关注人的id,第二列是被关注人的id,这2列的id组成主键 +———+————-+ | user_id | follower_id | +———+————-+ | 1 | 2 | | 1 | 4 | | 2 | 3 | +———+————-+ 这张表的第一行代表着用户id为1的关注着id为2的用户 这张表的第二行代表着用户id为1的关注着id为4的用户 这张表的第三行代表着用户id为2的关注着id为3的用户 个人的喜欢的音乐music_likes表,第一列是用户id,第二列是喜欢的音乐id,这2列的id组成主键 +———+———-+ | user_id | music_id | +———+———-+ | 1 | 17 | | 2 | 18 | | 2 | 19 | | 3 | 20 | | 4 | 17 | +———+———-+ 这张表的第一行代表着用户id为1的喜欢music_id为17的音乐 …. 这张表的第五行代表着用户id为4的喜欢music_id为17的音乐 音乐music表,第一列是音乐id,第二列是音乐name,id是主键 +—-+————+ | id | music_name | +—-+————+ | 17 | yueyawang | | 18 | kong | | 19 | MOM | | 20 | Sold Out | +—-+————+ 请你编写一个SQL,查询向user_id = 1 的用户,推荐其关注的人喜欢的音乐。 不要推荐该用户已经喜欢的音乐,并且按music的id升序排列。你返回的结果中不应当包含重复项 上面的查询结果如下: +————+ | music_name | +————+ | kong | | MOM | +————+-笔试面试资料