數據表:
列轉行:利用max(case when then)
max
---聚合函數 取最大值
(
case
course
when
'語文'
then
score
else
0
end
)
---判斷
as 語文
---別名作爲列名
SELECT `name`, MAX( CASE WHEN course='語文' THEN score END ) AS 語文, MAX( CASE WHEN course='數學' THEN score END ) AS 數學, MAX( CASE WHEN course='英語' THEN score END ) AS 英語 FROM student GROUP BY `name` ;
合併字段顯示:利用group_concat(course,”:”,”score”)
SELECT `name`, GROUP_CONCAT(course, ":", score) AS 成績 FROM student GROUP BY `name`;
group_concat(),手冊上說明:該函數返回帶有來自一個組的連接的非NULL值的字符串結果。
比較抽象,難以理解。
通俗點理解,其實是這樣的:group_concat()會計算哪些行屬於同一組,將屬於同一組的列顯示出來。要返回哪些列,由函
數參數(就是字段名)決定。分組必須有個標準,就是根據group by指定的列進行分組。
group_concat函數應該是在內部執行了group by語句,這是我的猜測。