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
原文
http://m.blog.csdn.net/article/details?id=50231435