如何使用GROUP BY鏈接MySQL中的字符串?

基本上,問題是如何從中獲得: html

foo_id   foo_name
1        A
1        B
2        C

對此: mysql

foo_id   foo_name
1        A B
2        C

#1樓

SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;

http://dev.mysql.com/doc/refman/5.0/zh/group-by-functions.html#function_group-concat sql

在上面的連接中, GROUP_CONCAT :此函數返回一個字符串結果,其中包含來自組的串聯的非NULL值。 若是沒有非NULL值,則返回NULL。 函數


#2樓

SELECT id, GROUP_CONCAT( string SEPARATOR ' ') FROM table GROUP BY id

更多細節在這裏spa

在上面的連接中, GROUP_CONCAT :此函數返回一個字符串結果,其中包含來自組的串聯的非NULL值。 若是沒有非NULL值,則返回NULL。 code


#3樓

SELECT id, GROUP_CONCAT(CAST(name as CHAR)) FROM table GROUP BY id

將給您一個逗號分隔的字符串htm


#4樓

SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;

:-在MySQL中,您能夠獲取表達式組合的串聯值。 若要消除重複的值,請使用DISTINCT子句。 要對結果中的值進行排序,請使用ORDER BY子句。 要以相反的順序進行排序,請在ORDER BY子句中將DESC (降序)關鍵字添加到要做爲排序依據的列的名稱。 默認爲升序; 這能夠使用ASC關鍵字明確指定。 組中值之間的默認分隔符是逗號(「,」)。 要明確指定分隔符,請使用SEPARATOR,後跟應該在組值之間插入的字符串文字值。 要徹底消除分隔符,請指定SEPARATOR」排序

GROUP_CONCAT([DISTINCT] expr [,expr ...]
             [ORDER BY {unsigned_integer | col_name | expr}
                 [ASC | DESC] [,col_name ...]]
             [SEPARATOR str_val])

要麼 字符串

mysql> SELECT student_name,
    ->     GROUP_CONCAT(DISTINCT test_score
    ->               ORDER BY test_score DESC SEPARATOR ' ')
    ->     FROM student
    ->     GROUP BY student_name;

#5樓

結果被截斷爲group_concat_max_len系統變量給定的最大長度,該變量的默認值爲1024個字符,所以咱們首先執行如下操做: get

SET group_concat_max_len=100000000;

而後,例如:

SELECT pub_id,GROUP_CONCAT(cate_id SEPARATOR ' ') FROM book_mast GROUP BY pub_id
相關文章
相關標籤/搜索