我有一个表格列出了一些组织,以及一些细节,作为他们所在的国家。
我需要计算每个国家/地区的组织数量,并使用此查询进行管理:
SELECT COUNTRY, COUNT(*) AS ORGANIZATIONS FROM ORGANIZATION GROUP BY COUNTRY
这给了我一个这样的结果集:
COUNTRY | ORGANIZATION
--------+-------------
UK | 12
FR | 7
NL | 9
这很好,但我正在寻找的更好的结果是单行结果,如下所示:
UK | FR | NL
---+----+---
12 | 7 | 9
关于如何在MySQL中单独做到这一点的任何想法?
答案 0 :(得分:1)
使用单个SQL语句无法实现这一点,因为它需要未知数量的列。
我倾向于说这只是返回数据的格式化,因此可能是调用脚本中更好的位置。
但是,如果您感兴趣的国家数量固定,则很容易做到。但是有几个子查询可能不会那么有效。
可以做的是动态构建SQL,但这很麻烦。
替代方案是将GROUP_CONCAT国家/地区详细信息划分为一行: -
SELECT GROUP_CONCAT(CONCAT_WS('##', COUNTRY, ORGANIZATIONS ))
FROM
(
SELECT COUNTRY, COUNT(*) AS ORGANIZATIONS
FROM ORGANIZATION
GROUP BY COUNTRY
) sub0