簡介
MySQL是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它是開源的,使用廣泛。在MySQL中,有時需要將多行數(shù)據(jù)合并成單行數(shù)據(jù)以方便處理。本文將介紹MySQL中多行合并一行的方法。
方法
在MySQL中,可以使用GROUP_CONCAT函數(shù)將多行數(shù)據(jù)合并成一行數(shù)據(jù)。GROUP_CONCAT函數(shù)用于將一個字段的多個值連接在一起。以下是GROUP_CONCAT的語法:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
GROP_CONCAT函數(shù)的參數(shù)說明如下:
DISTINCT:
可選。該參數(shù)用來去重,表示只將不重復(fù)的值連接在一起。expr:
必須。該參數(shù)表示要連接的字段,它可以是任何表達(dá)式。ORDER BY:
可選。該參數(shù)用于指定連接后的順序。SEPARATOR:
可選。該參數(shù)用來指定連接的分隔符,默認(rèn)為逗號。
實例
假設(shè)有一張名為"student_score"的表,其結(jié)構(gòu)如下:
id | name | course | score
現(xiàn)在需要將所有學(xué)生的科目名和分?jǐn)?shù)合并在一起,同一學(xué)生的科目和分?jǐn)?shù)要分別用逗號分隔,不同學(xué)生的結(jié)果要用分號分隔。可以使用以下查詢語句:
SELECT name, GROUP_CONCAT(CONCAT(course, ':', score) SEPARATOR ',') AS scores
FROM student_score
GROUP BY name;
查詢結(jié)果如下:
name | scores
Tom | math:90,chemistry:80,history:70
John | math:85,chemistry:92
Jane | math:95,biology:85,history:75
Peter | math:87,history:80
總結(jié)
使用GROUP_CONCAT函數(shù)可以將多行數(shù)據(jù)合并成一行數(shù)據(jù)。在使用GROUP_CONCAT函數(shù)時,需要注意參數(shù)的設(shè)置,可以使用ORDER BY指定連接的順序,可以使用SEPARATOR指定連接的分隔符。