需要帮助配置以下查询:
查询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';
查询1输出:
| serial_number | COLUMN_NAME |
| 1 | ID |
| 2 | FirstName |
| 3 | LastName |
... up to 89 rows ...
我正在尝试将此查询的输出转置为如下所示:
| 1 | 2 | 3 |
| ID | FirstName | LastName |
将序列号作为标题,将 COLUMN_NAME 作为单行。有什么想法吗?
提前致谢!
最佳答案
如果你确实需要这个,你可以使用动态 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 演示
关于mysql - 在mysql中将列转置为行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26708119/