Mysql SQL计数返回的行太多

Mysql SQL计数返回的行太多,mysql,sql,join,count,left-join,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 用户表和组织表由名为Organization\u id的东西绑定 当我执行此语句时,会得到以

我有以下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
用户表和组织表由名为Organization\u id的东西绑定

当我执行此语句时,会得到以下错误结果:

id |  name   | num_users
------------------------
 1 |  MyOrg  |     2
 2 |  MyOrg  |     0
 3 | testOrg |     0
谁能告诉我,我如何才能得到一个结果,将只产生1线公关组织

请注意,我尝试了DISTINCT,但没有得到更好的结果,演示了以下查询:

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;
演示以下查询:

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;

由于唯一的id号,DISTINCT将不起作用。选择DISTINCT O.name,从用户U中选择COUNTU.id,其中U.organization\U id=O.id作为组织O中的num\U用户不起作用either@Marc拉斯穆森:所以你的表叫做Organization,每个组织都有一个ID,但两个组织恰好是一个组织,以防他们的名字匹配?这就是你说的吗???看起来你有不止一个名为“MyOrg”的组织。我觉得结果不错,但你想如何处理这个案子?请显示所需结果。由于id号唯一,DISTINCT将不起作用。请选择DISTINCT O.name,从用户U中选择COUNTU.id,其中U.organization\U id=O.id作为组织O中的num\U用户不工作either@Marc拉斯穆森:所以你的表叫做Organization,每个组织都有一个ID,但两个组织恰好是一个组织,以防他们的名字匹配?这就是你说的吗???看起来你有不止一个名为“MyOrg”的组织。我觉得结果不错,但你想如何处理这个案子?请显示您想要的结果。使用内部联接,您将不会得到任何0个计数。使用左联接和计数*,具有0个用户的组织将人为地向计数中添加1。例如,“MyOrg”将显示3个用户,而它应该是2。@Marcus Adams,我使用联合更新了我的答案,以获得第一个查询中没有的所有o.id。我更喜欢你的第一个答案。提示:只需将COUNT*改为COUNTU.organization\u id.Marcus Adams,哇,谢谢,我不知道我在想什么。我更新了我的答案。今天可能是星期二,但我的大脑似乎像星期一一样工作。我应该已经注意到了。使用内部联接,您不会得到任何0计数。使用左联接和计数*,具有0个用户的组织将人为地向计数中添加1。例如,“MyOrg”将显示3个用户,而它应该是2。@Marcus Adams,我使用联合更新了我的答案,以获得第一个查询中没有的所有o.id。我更喜欢你的第一个答案。提示:只需将COUNT*改为COUNTU.organization\u id.Marcus Adams,哇,谢谢,我不知道我在想什么。我更新了我的答案。今天可能是星期二,但我的大脑似乎像星期一一样工作。我应该注意到这一点。