我有以下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
但未获得更好的结果
答案 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;