SQL Count返回太多行

时间:2014-06-03 12:46:59

标签: mysql sql join count left-join

我有以下SQL语句:

    SELECT 
    O.id,
    O.name,
    (SELECT 
            COUNT(U.id)
        FROM
            User U
        WHERE
            U.organization_id = O.id) AS num_users
FROM
    Organization O

User表和Organization表由名为organization_id

的东西绑定

当我执行此语句时,我得到了以下(坏)结果:

id |  name   | num_users
------------------------
 1 |  MyOrg  |     2
 2 |  MyOrg  |     0
 3 | testOrg |     0

任何人都可以告诉我如何得到一个只会产生1行pr的结果。组织?

请注意,我已尝试使用DISTINCT但未获得更好的结果

1 个答案:

答案 0 :(得分:4)

SQL Fiddle演示以下查询:

SELECT GROUP_CONCAT(DISTINCT o.id SEPARATOR ', '), O.name, 
       COUNT(U.organization_id) AS MyCount
FROM Organization O
LEFT JOIN User U ON U.organization_id = O.id
GROUP BY O.name;

或者,如果您不需要id字段,那么:

SELECT O.name, COUNT(U.organization_id) AS MyCount
FROM Organization O
LEFT JOIN User U ON U.organization_id = O.id
GROUP BY O.name;
相关问题