本文轉自
https://blog.csdn.net/rainyspring4540/article/details/50231435/
我的個人理解:mysql 行變列(多行變成一行/多行合併成一行/多行合併成多列/合併行),我覺得這都是一個意思
數據庫結構如圖:
而我想讓同一個人的不同成績變成此人在這一行不同列上顯示出來,此時分爲2中展現:
第一種展現如圖----【多行變一列】(合併後的數據在同一列上):
sql如下:
select name ,group_concat(sore Separator ';') as score from stu group by name
第二種展現如圖----【多行變多列】(合併後的數據在不同列上):
sql如下:
SELECT name ,
MAX(CASE type WHEN '數學' THEN score ELSE 0 END ) math,
MAX(CASE type WHEN '英語' THEN score ELSE 0 END ) English ,
MAX(CASE type WHEN '語文' THEN score ELSE 0 END ) Chinese
FROM stu
GROUP BY name
-----------------------------------------------------------------------------------------------------可愛的分割線----------------------------------------------------------------------------------------------------
當然,在第一種情況中(顯示在一列),也有些其他的類似形式:
形式一:
sql如下:
select name ,group_concat(type,'分數爲:',score Separator '; ') as score from stu group by name
呵呵,當然 如果你很熟悉group_concat和concat的用法,你也做出如下形式:
其sql如下:
select name ,concat(name ,'的分數爲[',group_concat(type,'分數爲:',score Separator '; '),']') as score from stu group by name
---------------------
作者:放學後的泡泡
來源:CSDN
原文:https://blog.csdn.net/rainyspring4540/article/details/50231435?utm_source=copy
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!