题目:
在 facebook 中,表 follow 会有 2 个字段: followee, follower ,分别表示被关注者和关注者。
请写一个 sql 查询语句,对每一个关注者,查询关注他的关注者的数目。
比方说:
应该输出:
解释:
B 和 D 都在在 follower 字段中出现,作为被关注者,B 被 C 和 D 关注,D 被 E 关注。A 不在 follower 字段内,所以A不在输出列表中。
注意:
被关注者永远不会被他 / 她自己关注。
将结果按照字典序返回。
解题思路:
建表语句:
1 Create table If Not Exists follow_614 (followee varchar(255), follower varchar(255)); 2 Truncate table follow_614; 3 insert into follow_614 (followee, follower) values ('A', 'B'),('B', 'C'),('B', 'D'),('D', 'E');
直白点理解题意就是筛选出在follower列中出现的字母在followee出现的次数。
①首先从表中通过where条件筛选出在followee在follower出现的数据;
②以followee为分组和排序,统计出followee和follower出现的次数。
1 select f.followee,count(distinct f.follower) as num 2 from follow_614 f 3 where f.followee in( 4 select follower 5 from follow_614 6 ) 7 group by f.followee 8 order by f.followee
小知识:
SQL的执行顺序:
FROM > ON > JOIN >WHERE > GROUP BY > HAVING >SELECT > UNION > ORDER BY > LIMIT
SQL的书写顺序:
SELECT > FROM > WHERE > JOIN > ON > GROUP BY > HAVING > UNION > ORDER BY > LIMIT
标签:followee,614,力扣,follower,关注,LIMIT,MySQL,follow From: https://www.cnblogs.com/liu-myu/p/17287031.html