您可以从查询结果中使用 CREATE TABLE。(见http://dev.mysql.com/doc/refman/5.5/en/create-table.html)
CREATE TABLE summary
SELECT login_code_id, login_purpose_type, COUNT(login_purpose_type) AS cnt
FROM <old_table_name>
GROUP BY login_code_id, login_purpose_type;
将为您提供具有以下结构的表:
login_code_id | login_purpose_type | cnt
=======================================
A | maintenance | 5
----------------------------------------
A | review | 3
----------------------------------------
B | review | 2
在此表中,每一行都显示了给定 login_purpose_type 对于给定 login_code_id 出现的频率。
如果您真的想将 login_code_id 和 (login_ purpose_type, cnt) 列表作为一列,您可以一次性获得它(但对于大型数据集可能会很慢:
CREATE TABLE summary_2
SELECT login_code_id, group_concat(cnt) AS info
FROM ( SELECT login_code_id,
concat("(", login_purpose_type,",", count(login_code_id),")") AS cnt
FROM <old_table_name>
GROUP BY login_code_id, login_purpose_type) s
GROUP BY login_code_id ;
这将为您提供如下表格:
+-----------------+---------------------------+
| login_code_id | info |
+-----------------+---------------------------+
| A | (maintenance,3),(review,2)|
| B | (scan,2),(review,3) |
| C | (terminate,1) |
+---------------------------------------------+
或者您可以使用第一个表作为中间表并从之前的汇总表创建 summary_2:
CREATE TABLE summary_2
SELECT login_code_id, group_concat(cnt) AS info FROM (
SELECT login_code_id, concat("(", login_purpose_type,",", cnt,")") AS cnt
FROM summary ) s
GROUP BY login_code_id ;