数据库实现行列转换(mysql示例)

 更新时间:2016年12月04日 09:06:07   投稿:daisy  
最近突然玩起了sql语句,想着想着便给自己出了一道题目:“行列转换”。起初瞎折腾了不少时间也上网参考了一些博文,不过大多数是采用oracle数据库当中的一些便捷函数进行处理,比如”pivot”。那么,在Mysql环境下如何处理?下面通过这篇文章我们来一起看看吧。

这篇文章通过sql示例代码给大家介绍了mysql数据库如何实现行列转换,下面话不多说,直接来看示例代码吧。

原表:

表名 :user
----------------------------------------
name    | course  | grade
----------------------------------------
zhangsan  | Java   | 70
----------------------------------------
zhangsan  | C++   | 80
----------------------------------------
lisi    | java   | 90
----------------------------------------
lisi    | C#    | 60
----------------------------------------

用一条 SQL 语句得到如下形式:

----------------------------------------
name   | java | C++ | C#
----------------------------------------
zhangsan | 70  | 80  | null
----------------------------------------
lisi   | 90  | null | 60
----------------------------------------

方案一

select  name,
sum(case when course='java' then grade end) as java,
sum(case when course='C++' then grade end) as C++,
sum(case when course='C#' then grade end) as C#
from test group by name

方案二

select distinct c.`name` AS name,
(select grade from test where name = c.`name` and course = 'java' )as java,
(select grade from test where name = c.`name` and course = 'C++' )as C++,
(select grade from test where name = c.`name` and course = 'C#' )as C#
from test c

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能有一定的帮助,如果有疑问大家可以留言交流。

相关文章

  • linux服务器清空MySQL的history历史记录 删除mysql操作记录

    linux服务器清空MySQL的history历史记录 删除mysql操作记录

    mysql历史记录上可能留下了很多敏感信息,比如密码什么的,需及时清空历史记录,下面分享一下inux服务器清空MySQL的history历史记录的方法
    2014-01-01
  • MySQL查询用户权限的方法总结

    MySQL查询用户权限的方法总结

    这篇文章主要介绍了MySQL查询用户权限的方法总结内容,需要的朋友们可以参考下。
    2020-03-03
  • MySQL SELECT数据查看WHERE(AND OR IN NOT)语句

    MySQL SELECT数据查看WHERE(AND OR IN NOT)语句

    这篇文章主要介绍了MySQL SELECT数据查看WHERE(AND OR IN NOT)de 语句学习,非常适合新手小白朋友,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • mysql中如何使用正则表达式查询

    mysql中如何使用正则表达式查询

    这篇文章主要介绍了mysql中如何使用正则表达式查询,需要的朋友可以参考下
    2014-06-06
  • mysql中between的边界,范围说明

    mysql中between的边界,范围说明

    这篇文章主要介绍了mysql中between的边界,范围说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • MySQL生成千万测试数据以及遇到的问题

    MySQL生成千万测试数据以及遇到的问题

    前两天发现同事要做一个对大表进行范围查询的功能,所以需要生成千万数据进行性能测试,下面这篇文章主要给大家介绍了关于MySQL生成千万测试数据以及遇到的问题的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • MySQL隐式类型转换导致索引失效的解决

    MySQL隐式类型转换导致索引失效的解决

    本文主要介绍了MySQL隐式类型转换导致索引失效的解决,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • MySQL函数一览_MySQL函数全部汇总

    MySQL函数一览_MySQL函数全部汇总

    下面小编就为大家带来一篇MySQL函数一览_MySQL函数全部汇总。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • MySQL8的主要目录结构解读

    MySQL8的主要目录结构解读

    这篇文章主要介绍了MySQL8的主要目录结构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • MySQL表列数和行大小限制示例详解

    MySQL表列数和行大小限制示例详解

    行是表中存储数据的行,也称为记录,MySQL的行上限主要受限于两个因素,表的大小和操作系统的限制,这篇文章主要给大家介绍了关于MySQL表列数和行大小限制的相关资料,需要的朋友可以参考下
    2024-04-04

最新评论