我正在使用 MySQL COUNT()
方法来找出两个表中有多少行具有 u.id 的 uid
。
为此,我使用以下方法:
SELECT u.id, u.first_name, u.last_name, u.email, u.username, COUNT( q.uid ) AS `q_count`, COUNT( a.uid ) AS `a_count`
FROM `users` AS u
INNER JOIN `questions` AS q ON u.id = q.uid
INNER JOIN `answers` AS a ON u.id = a.uid
WHERE u.username = 'admin'
但是,当我运行上述查询时,第二个计数返回的行数与第一个计数的行数相同。我知道这是因为第一个计数返回两个,第二个也在做同样的事情,当
questions
表中有两行而 answers
表中有一行时。请你能告诉我我哪里出错了吗?
谢谢
我收到的样本:http://d.pr/i/vcnJ
来自
answers
的示例数据:http://d.pr/i/TMkU来自
questions
的示例数据:http://d.pr/i/tuwU 最佳答案
我相信原因是你正在做一个 JOIN,它将把结果合并成一个。请使用相同的查询,但使用 SELECT *
代替,您将看到为什么会发生这种情况。
试试这个:
SELECT u.id, u.first_name, u.last_name, u.email, u.username, COUNT( DISTINCT q.id ) AS `q_count`, COUNT( DISTINCT a.id ) AS `a_count`
FROM `users` AS u
INNER JOIN `questions` AS q ON u.id = q.uid
INNER JOIN `answers` AS a ON u.id = a.uid
WHERE u.username = 'admin'
关于mysql - COUNT() 返回错误的行数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10372934/