Mysql:计算表中的出现次数,返回单行

时间:2014-07-24 07:40:04

标签: mysql count

我有一个表格列出了一些组织,以及一些细节,作为他们所在的国家。

我需要计算每个国家/地区的组织数量,并使用此查询进行管理:

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中单独做到这一点的任何想法?

1 个答案:

答案 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