SQL计算的行数比实际多一行
我有这些桌子: 评论SQL计算的行数比实际多一行,sql,count,row,Sql,Count,Row,我有这些桌子: 评论 uid id pid pid user id rank . . . 页面 uid id pid pid user id rank . . . 用户 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
uid
id
pid
pid
user
id
rank
.
.
.
页面
uid
id
pid
pid
user
id
rank
.
.
.
用户
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条评论
查询中有问题吗?问题是用户要乘以他的页数,然后乘以他的评论数。解决此问题的一种方法是
count(distinct..)
:
成功了!!非常感谢,当网站允许我的时候,我会接受你的回答。。你能再给我解释一下,用户的页数乘以他的页数吗?这意味着什么?第一个连接为每个页面检索一行。如果一个用户有两个页面,那就是两行。下一个连接将检索这两行中每一行的注释!因此,如果用户有3条注释,那么您将得到6行。