數(shù)據(jù)庫實現(xiàn)行列轉(zhuǎn)換(mysql示例)
更新時間:2016年12月04日 09:06:07 投稿:daisy
最近突然玩起了sql語句,想著想著便給自己出了一道題目:“行列轉(zhuǎn)換”。起初瞎折騰了不少時間也上網(wǎng)參考了一些博文,不過大多數(shù)是采用oracle數(shù)據(jù)庫當中的一些便捷函數(shù)進行處理,比如”pivot”。那么,在Mysql環(huán)境下如何處理?下面通過這篇文章我們來一起看看吧。
這篇文章通過sql示例代碼給大家介紹了mysql數(shù)據(jù)庫如何實現(xiàn)行列轉(zhuǎn)換,下面話不多說,直接來看示例代碼吧。
原表:
表名 :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
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能有一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
MySQL中sleep函數(shù)的特殊現(xiàn)象示例詳解
這篇文章主要給大家介紹了關(guān)于MySQL中sleep函數(shù)特殊現(xiàn)象的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用MySQL具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-10-10數(shù)據(jù)庫SQL調(diào)優(yōu)的幾種方式匯總
在項目中,SQL的調(diào)優(yōu)對項目的性能來講至關(guān)重要,所有掌握常見的SQL調(diào)優(yōu)方式是必不可少的,下面這篇文章主要給大家介紹了關(guān)于數(shù)據(jù)庫SQL調(diào)優(yōu)的幾種方式,需要的朋友可以參考下2022-10-10Mysql查詢優(yōu)化之IN子查詢優(yōu)化方法詳解
項目中有需要,使用MySQL的in子查詢,查詢符合in子查詢集合中條件的數(shù)據(jù),但是沒想到的是,MySQL的in子查詢會如此的慢,讓人無法接受,下面這篇文章主要給大家介紹了關(guān)于Mysql查詢優(yōu)化之IN子查詢優(yōu)化的相關(guān)資料,需要的朋友可以參考下2023-02-02