繁体   English   中英

SQL-COUNT()计算错误的数字

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM