需要帮助配置以下查询:
查询1:
SELECT @s:= @s + 1 serial_number,`COLUMN_NAME`
FROM `INFORMATION_SCHEMA`.`COLUMNS`, (SELECT @s:= 0) AS s
WHERE `TABLE_SCHEMA`='2014rawfiles'
AND `TABLE_NAME`='012014actives';
Query1输出:
| serial_number | COLUMN_NAME |
| 1 | ID |
| 2 | FirstName |
| 3 | LastName |
... up to 89 rows ...
我试图将此查询的输出转换为如下所示:
| 1 | 2 | 3 |
| ID | FirstName | LastName |
将serial_number作为标题,将COLUMN_NAME作为单行。有什么想法吗?
提前致谢!
答案 0 :(得分:1)
如果你真的需要这个,你可以使用动态SQL
SET @sql = NULL;
SELECT GROUP_CONCAT(CONCAT('''',column_name, ''' `', @n := @n + 1, '`'))
INTO @sql
FROM information_schema.columns CROSS JOIN (SELECT @n := 0) i
WHERE table_schema = SCHEMA()
AND table_name = '012014actives'
ORDER BY ordinal_position;
SET @sql = CONCAT('SELECT ', @sql);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
输出:
| 1 | 2 | 3 | |----|-----------|----------| | Id | FirstName | LastName |
这是 SQLFiddle 演示
答案 1 :(得分:0)
没有直接的方法可以做到这一点。但是你可以选择一个替代方案,我将告诉你 你。
您无法将值拆分为列,但可以将它们合并到一个列中,并可以进一步将它们拆分为前端。
SELECT group_concat(serial_number)来自pivot union所有SELECT group_concat(COLUMN_NAME)来自
枢轴
通过这个你会得到这样的结果
1,2,3
ID,FirstName,LastName