mysql - 如何对MySQL表数据和列进行转置操作?

标签 mysql sql

例如,我有一个名为“stdinfo”的表

Id   Name    Mark
-----------------
1    Helal   10
2    Shakil  15
...  ...     ...
...  ...     ...
...  ...     ...

现在我想像下面这样转换表格结果

Name  Helal Shakil ...
----------------------
Id    1     2      ...
Mark  10    15     ...
   

有一点很重要,就是行数不固定。

最佳答案

你可以试试这个

表格

--------------------------------------------------
subject_id    subjectname   classid  teacher_id
---------------------------------------------------
3           Math         3          T-1
4         Economics      4          T-1
5          Physcis       3          T-1
--------------------------------------------------

查询:

SELECT  sum( if( subjectname = 'Math', subject_id, 0 ) ) AS 'Economics',  
sum( if( subjectname = 'Economics', subject_id, 0 ) ) AS 'Math', 
sum( if( subjectname = 'Physcis', subject_id, 0 ) ) AS 'Physcis' 
FROM tbsubject group by subjectname

输出:

----------------------------
Math   Economics  Physcis
---------------------------
0   4       0
3   0       0
0   0       5
----------------------------

或者您可以通过编程创建 View 。更多示例请参见数据透视表 http://www.krishnasunuwar.com.np/2011/02/crosstab-query-pivot-table-or-transformation-of-rows-into-columns/

关于mysql - 如何对MySQL表数据和列进行转置操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21875964/

相关文章:

mysql - 为本地环境设置中央MySQL服务器

MySQL:在包含 url 的字段中按主机名搜索

javascript - 数组与 Postgres 中的数组重叠

sql - 从 Postgres 中的日期中提取工作日、毫秒、微秒、纳秒

mysql - 使用 MySQL Workbench 安全组通过 EC2 实例连接到 Amazon RDS 实例

php - Laravel 查询生成器 'where' 方法已损坏

c# - 引导顺序不正确

sql - 如何在Oracle中计数后选择最大值?

mysql - 选择所有行 (700000) 很长时间 - 小时

mysql - 如何对该 SQL 进行分组