[英]SQL - COUNT() counts wrong number
我正在尝试计算个人档案访问的次数,但它计算的是错误的次数。 在下面的示例中,应该有3次访问,但计数为6! 有人知道这是怎么回事吗? http://sqlfiddle.com/#!9/b43ea/8
SELECT *,
COUNT(profile_visitors.profile_id) AS visitorCount
FROM profile_visitors
LEFT JOIN user_login ON user_login.user_id = profile_visitors.user_id
WHERE profile_visitors.user_id = 1
您需要对分组依据进行计数以计算多行,因此从查询中删除星号,并按user_id添加分组,也将其设为profile_visitors。*
LEFT JOIN到user_login表对该问题没有任何帮助,但是,以下查询将为您提供您想要查看的详细信息(假设您只想查看user_id = 1的访问次数):
SELECT COUNT(profile_visitors.profile_id) AS visitorCount
FROM profile_visitors
WHERE profile_visitors.user_id = 1
GROUP BY profile_visitors.profile_id
要按个人资料查看所有访问,请使用:
SELECT profile_id, COUNT(profile_visitors.profile_id) AS visitorCount
FROM profile_visitors
GROUP BY profile_visitors.profile_id
您可以使用WHERE IN ()
比较user_login
是否存在profile_visitors.user_id
SELECT *,
COUNT(profile_visitors.user_id) AS visitorCount
FROM profile_visitors
WHERE profile_visitors.user_id IN (SELECT user_id FROM user_login )
结果:
id user_id profile_id visit_date visitorCount
1 1 1 May, 10 2015 15:26:46 3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.