我的数据库当前存在2个表。一个是用户表,另一个是关注者表。用户可以互相关注,这意味着followers表将具有如下所示的行:
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
list_of_followers
只是的所有用户关注者的逗号分隔列表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
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句