如何计算联接表上的行数

Posted

技术标签:

【中文标题】如何计算联接表上的行数【英文标题】:How to count rows on joined table 【发布时间】:2013-01-30 20:12:51 【问题描述】:

我有 2 个表 - 一个主(称为组)和详细信息(称为用户)

我想返回每个主行以供后续显示,但我只想计算有多少详细行与主行匹配

我的查询不能正常工作——它只返回主表中的第一行

$query_string = '
    SELECT groups.userGroupID, userGroup,
           count(users.userGroupID) AS howMany
    FROM groups_table AS groups
    JOIN users_table AS users ON users.userGroupID = groups.userGroupID
    ORDER BY groups.userGroupID
';

感谢您的帮助。

【问题讨论】:

你需要一个group by groups.userGroupID 感谢@MarcB -- 只返回前 2 个主行 您也没有指定连接类型,因此默认情况下 mysql 进行内部连接,并仅显示在连接两侧都有记录的行。如果您想要所有组,即使他们没有用户,也可以使用 LEFT JOIN。 【参考方案1】:

忘记了你的群组:

SELECT groups.userGroupID, userGroup,
       count(users.userGroupID) AS howMany
FROM groups_table AS groups
LEFT JOIN users_table AS users ON users.userGroupID = groups.userGroupID
GROUP BY groups.userGroupID
ORDER BY groups.userGroupID

【讨论】:

我需要左连接还是右连接,因为我只有 2 个主行 如果您想要群组,即使他们没有用户,也可以离开加入。 在 9 分钟内无法接受答案(这是我真正讨厌 SO 的一件事!)...继续前进 - 下次重新登录时我会接受【参考方案2】:

这对我有用,希望它可以帮助其他寻找相同答案的人

SELECT COUNT(howMany) AS fo2
FROM(
 SELECT groups.userGroupID, userGroup,
 users.userGroupID AS howMany
 FROM groups_table AS groups
 JOIN users_table AS users ON users.userGroupID = groups.userGroupID
 ORDER BY groups.userGroupID) AS myCount

【讨论】:

以上是关于如何计算联接表上的行数的主要内容,如果未能解决你的问题,请参考以下文章

联接表上的条件比参考上的条件快

如何精确计算文本所占的行数

如何使用opencv准确计算图像中的行数

如何计算某天的行数

如何计算 MySqlDataReader 中的行数?

如何有效地计算数据帧的行数? [复制]