如何编写SQL关联UserFollows与Users表,筛选含指定用户名的特定用户粉丝?
解决方案
要实现这个需求,你需要关联UserFollows和Users两张表来获取粉丝的用户名信息——UserFollows中的UserId对应Users表的用户ID(也就是粉丝的ID)。以下是两种可行的实现方式:
方法一:使用INNER JOIN(推荐,性能更优)
SELECT u.Id, u.Username FROM UserFollows uf INNER JOIN Users u ON uf.UserId = u.Id WHERE uf.FollowedId = 100 AND u.Username LIKE '%hey%';
- 说明:通过
INNER JOIN关联两张表,匹配条件为粉丝ID(uf.UserId)与用户表ID(u.Id)一致;WHERE子句先筛选出关注了ID为100的用户的所有粉丝,再通过LIKE '%hey%'过滤出用户名包含'hey'的粉丝。 - 若需要保留
UserFollows表的字段,可将SELECT部分改为SELECT uf.*, u.Id, u.Username。
方法二:使用子查询
如果更习惯子查询的写法,也可以用下面的语句:
SELECT u.Id, u.Username FROM Users u WHERE u.Id IN ( SELECT uf.UserId FROM UserFollows uf WHERE uf.FollowedId = 100 ) AND u.Username LIKE '%hey%';
- 说明:先通过子查询找出所有关注了ID为100的用户的粉丝ID,再在
Users表中筛选出这些ID里用户名包含'hey'的用户。
内容的提问来源于stack exchange,提问作者normativepcoder
相关产品推荐
相关产品推荐

