MySQL从c#中的某个用户那里获得追随者
本文关键字:那里 用户 追随者 MySQL | 更新日期: 2023-09-27 18:13:37
我的数据库目前有两个表。一个是用户表,另一个是追随者表。用户可以相互跟随,这意味着跟随者表将有一行,如下所示:
Table: followers
Row: user_id | follower_id
所以如果我有3个用户:
User 1 | id = 1
User 2 | id = 2
User 3 | id = 3
用户1跟在用户2后面,用户2跟在用户3后面,跟随者表中的行如下所示:
user_id = 2 | follower_id = 1
user_id = 3 | follower_id = 2
所有这些都很好,但当我想在c#中检索该用户的所有追随者时,我应该如何创建查询?我的类有一个关注这个用户的人的id列表。像这样:(这可能是用户对象的列表,我现在只需要ID(
public class User
{
public int id { get; set; }
public List<int> followers { get; set; }
}
我可以从数据库中检索用户,但我不知道如何在一个查询中获得该用户的所有追随者。任何帮助都将不胜感激!
查询可能如下所示:
SELECT u.id, u.name, GROUP_CONCAT(f.follower_id) AS list_of_followers
FROM user u
JOIN followers f ON u.id = f.user_id
WHERE u.id = 2
GROUP BY u.id, u.name
CCD_ 1只是一个逗号分隔的列表,其中列出了具有id=2
的用户的所有追随者。您可以很容易地解析字符串并从中填充List<int>
编辑:
如果你还想获得拥有无追随者的用户,那么你可以修改上面的查询如下:
SELECT u.id, u.name,
GROUP_CONCAT(f.follower_id) AS list_of_followers,
COUNT(f.follower_id) AS count_of_followers
FROM user u
LEFT JOIN followers f ON u.id = f.user_id
WHERE u.id = 2
GROUP BY u.id, u.name
对于没有追随者的用户count_of_followers = 0
。