mysql - 在mysql中将列转置为行

标签 mysql sql

需要帮助配置以下查询:

查询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/

相关文章:

java - 异常: Operation not allowed after ResultSet closed while fetching value from two table

java - 为什么我的事务没有被 Spring 注解回滚?

mysql - 有没有办法使用ansible连接mysql服务器并执行诸如执行.sql文件和各种mysql转储和恢复之类的操作?

sql - SQL Server 中基于条件行分组的列值相乘

mysql - 检查表a是否存在表b中的主键

mysql - 添加到长而复杂的查询

mysql - 棘手的数据库设计

sql - BigQuery 日期分区 View

mysql - SQL 语句返回应通过的步骤列表中的当前步骤以及进程是否已结束

sql - POSTGRESQL 数组不包含值