【问题标题】:Count returns duplicate of another count in mysql计数返回mysql中另一个计数的重复项
【发布时间】:2020-09-07 06:38:58
【问题描述】:

我找不到问题出在哪里,我的 COUNT() 为 contracts_countrecords_count 值返回相同的数字。当只使用一个计数时,一切正常。本次查询原理:访问company表,得到它的id和name,companygroupcontract表中的外键相关,record 具有与 group 表相关的外键。所以我加入有合同的公司以获得每个公司的合同数量,并加入有合同的组,记录组以获得每个公司的记录数。

SELECT 
`company`.`id`,
`company`.`name`,
COUNT(`contract`.`contract_id`) AS contracts_count, 
COUNT(`record`.`record_id`) AS records_count
                    FROM `company`
                    LEFT JOIN `contract`
                            ON `company`.`id`=`contract`.`fk_companystudijos_id`
                    LEFT JOIN `group` 
                            ON `contract`.`fk_groupID`=`group`.`id`
                    LEFT JOIN `record` 
                            ON `group`.`id`=`record`.`fk_groupID`
                            GROUP BY `company`.`id`
                            ORDER BY contracts_count DESC

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    COUNT() 计算其参数的非NULL 值的行数。这对于您的两列来说几乎相同。

    我很确定你想要COUNT(DISTINCT)

    COUNT(DISTINCT `contract`.`contract_id`) AS contracts_count, 
    COUNT(DISTINCT `record`.`record_id`) AS records_count
    

    【讨论】:

    • 我之前尝试过使用DISTINCT,但我只把它放在了一个COUNT()上,谢谢你的快速回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多