我正在尝试检查当前用户是否已经关注所选用户,我这样做是这样的:
(我知道这不是最好的方式,但因为我是MYSQL的新手,这和我能够提出的一样多)
SELECT EXISTS (SELECT 1 FROM Activity WHERE IdOtherUser = 86 AND id = 145)
我是' 145'我选择的用户是' 86'
现在返回' 0'如果我不跟随并且' 1'如果我跟踪那个人。
似乎已经开始工作,但它肯定需要改进!
现在我想做的是在同一个查询中统计关注者。
所以请指望我关注的人和跟随我的人。
'活动'是我存储关注者的表格,我将它们保存为:
' ID' =我
' idOtherUser' =我跟着的其他用户
'类型' =行动类型"关注"
在计算类似数量之前,我已经完成了计算,但我无法理解这一点!
如果有人可以花些时间来帮助我,我们非常感激!
如果问题不是最好的,我很抱歉,但我仍在学习并尽力使其尽可能清晰地理解。
提前致谢!!
答案 0 :(得分:0)
如果您尝试从表Activity中的特定ID计算关注者,您可以这样做:
SELECT COUNT(idOtherUser) AS "I Follow",
(SELECT COUNT(idOtherUser) FROM Activity WHERE idOtherUser = 145 AND type = "follow"
) AS "FOLLOW ME",
(SELECT COALESCE(id,0) FROM Activity WHERE IdOtherUser = 86 AND id = 145 AND type = "follow")
FROM Activity WHERE id = 145 AND type = "follow"
答案 1 :(得分:0)
您可以使用"相关子查询"为了简化查询,您might
也希望计数不同(取决于您的数据)。我也避免在列别名中使用空格。
SELECT
COUNT(DISTINCT A1.idOtherUser) as i_follow
, (
SELECT
COUNT(DISTINCT A2.id)
FROM Activity A2
WHERE A2.idOtherUser = A1.id
AND A2.type = 'follow'
) as following_me
FROM Activity A1
WHERE A1.id = 145
AND A1.idOtherUser = 86
AND A1.type = 'follow'
尝试使用distinct而不使用,如果结果相同,则在查询之外留下明显的区别。