mysql查詢分組顯示資料結果之GROUP_CONCAT使用
阿新 • • 發佈:2019-01-24
用mysql語句怎麼把這樣的資料變成這樣,使用group_concat()函式;
select GROUP_CONCAT(id) AS id,name from `de_demo1` group by name
group_concat 函式:
該函式返回帶有來自一個組的連線的非NULL值的字串結果。該函式是一個增強的Sybase SQL Anywhere支援的基本LIST()函式。
語法結構:
GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ... ]] [SEPARATOR str_val])
DISTINCT:去除重複值
expr [,expr ...]:一個或多個欄位(或表示式)
ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]:根據欄位或表示式進行排序,可多個
SEPARATOR str_val:分隔符(預設為英文逗號)
注意:
1. 最大長度(字元)限制
系統變數:group_concat_max_len
SET [SESSION | GLOBAL] group_concat_max_len = val;
val必須是無符號整數
用了GROUP_CONCAT函式,SELECT 語句中的LIMIT語句起不了任何作用。
2. INT型別陷阱
連線的欄位為INT型別時,低版本或出現返回的結果不是逗號分隔的字串,而是byte[]。
此時,需要用CAST或CONVERT函式進行轉換。