Mysql 查询以统计跟随者的数量
我有一个MySQL表,我将在其中存储用户的Mysql 查询以统计跟随者的数量,mysql,Mysql,我有一个MySQL表,我将在其中存储用户的email\u id,以及用户的追随者的email\u ids。其栏目包括: ID, USER_EMAIL, FOLLWING_EMAIL 现在,当用户登录到他的帐户时,我想计算: 他跟踪的人数 他有多少追随者 计算他跟随的人数很简单: select count(*) from list where user_email = <logged-in email> 从用户电子邮件= 但是我如何计算一次查询中有多少人在跟踪他呢?我想您只需要更
email\u id
,以及用户的追随者的email\u id
s。其栏目包括:
ID, USER_EMAIL, FOLLWING_EMAIL
现在,当用户登录到他的帐户时,我想计算:
select count(*) from list where user_email = <logged-in email>
从用户电子邮件=
但是我如何计算一次查询中有多少人在跟踪他呢?我想您只需要更改WHERE子句中的字段:
SELECT count(*) FROM list WHERE following_email = '...'
要在一个查询中同时计数,请使用子选择:
SELECT
(SELECT count(*) FROM list WHERE user_email = '...') AS following,
(SELECT count(*) FROM list WHERE following_email = '...') AS followers
是否有任何优化来存储数据,以实现此功能
对。在
USER\u EMAIL
上添加一个索引,在FOLLOWING\u EMAIL
上添加另一个索引,那么FOLLOWING\u EMAIL是否就是该用户正在跟踪的人的电子邮件地址?还是将索引放入另一个表中?如果是前者,则:
SELECT COUNT(*) from list where FOLLOWING_EMAIL="test@test.com"
选择
计数(当用户\u email=''然后为1 ELSE NULL END时的情况)如下所示,
作为跟随者计数(在电子邮件后面为“”时为大小写,然后为1个ELSE NULL END)
从…起
列表
哪里
中的“”(用户电子邮件,在电子邮件之后)
如果您添加代码就好了。至少您的db模式给出了表结构。@DeveshAgrawal:您的Shift键似乎被卡住了。你能用普通的方式打字吗?这也适用于下面的注释。我可以在一个查询中同时计算这两个内容吗?
SELECT
COUNT(CASE WHEN user_email = '<email>' THEN 1 ELSE NULL END) AS following_cnt,
COUNT(CASE WHEN following_email = '<email>' THEN 1 ELSE NULL END) AS follower_cnt
FROM
list
WHERE
'<email>' IN (user_email, following_email)