SQL计算的行数比它多一行

时间:2012-06-24 20:08:23

标签: sql count row

我有这些表格:

评论

uid
id
pid

网页

pid
user

用户

id
rank
.
.
.

和这个查询:

SELECT
   u.*, 
   count(p.id) as 'pages',
   count(c.id) as 'comments' 
FROM 
  `users` u 
   LEFT OUTER JOIN `pages` p ON p.user = u.id
   LEFT OUTER JOIN `comments` c ON c.uid = u.id
GROUP BY u.id

出于某种原因,当用户只有1时,它会显示2条评论。

查询中是否有问题?

1 个答案:

答案 0 :(得分:2)

问题是用户乘以他的页数,然后乘以他的评论数。解决这个问题的一种方法是count(distinct ..)

count(distinct p.id) as 'pages',
count(distinct c.id) as 'comments'