我有一个数据库表,其重要列如下:
CREATE myTable (
id int,
type varchar(128),
field1 text);
我想做的是获取每个用户每种类型的行数的计数。 SQL很简单:
SELECT id, type, count(*) as count
FROM myTable
GROUP BY id, type;
我面临的挑战是我希望输出形式为二维表,其中行是id,列是不同的类型(其中有十几种左右)
我已经弄清楚了如何为此创建表结构:
SELECT
CONCAT(
'CREATE TABLE tmpMyTable (id int,',
GROUP_CONCAT(DISTINCT
CONCAT(type, ' int')
SEPARATOR ','),
');')
FROM (select distinct type from myTable) t
INTO @sql;
PREPARE stmt FROM @sql;
EXECUTE stmt;
但是我不知道如何有效地用数据填充表格。是的,我可以使用游标,遍历列名并为每个列执行动态SQL语句。但是,我想知道是否存在一种不使用游标的方法。
有什么建议吗?
谢谢。