共計 1938 個字符,預計需要花費 5 分鐘才能閱讀完成。
這期內(nèi)容當中丸趣 TV 小編將會給大家?guī)碛嘘P(guān) mysql 函數(shù)中的 GROUP_CONCAT 是怎樣用的,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
mysql 函數(shù)之——GROUP_CONCAT
完整句法如下:
GROUP_CONCAT([DISTINCT] expr [,expr …]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col …]]
[SEPARATOR str_val])
這個函數(shù)在 MySQL 4.1 中被加入。函數(shù)返回一個字符串結(jié)果,該結(jié)果由分組中的值連接組合而成:
mysql SELECT student_name,
– GROUP_CONCAT(test_score)
– FROM student
– GROUP BY student_name;
or
mysql SELECT student_name,
– GROUP_CONCAT(DISTINCT test_score
– ORDER BY test_score DESC SEPARATOR )
– FROM student
– GROUP BY student_name;
在 MySQL 中,你可以得到表達式結(jié)合體的連結(jié)值。通過使用 DISTINCT 可以排除重復值。如果希望對結(jié)果中的值進行排序,可以使用 ORDER BY 子句。為了以倒序排序,可以在 ORDER BY 子句中用于排序的列名后添加一個 DESC (遞減 descending) 關(guān)鍵詞。缺省為升序;這也可以通過使用 ASC 關(guān)鍵詞明確指定。SEPARATOR 是一個字符串值,它被用于插入到結(jié)果值中。缺省為一個逗號 (,)。你可以通過指定 SEPARATOR 完全地移除這個分隔符。在你的配置中,通過變量 group_concat_max_len 要以設(shè)置一個最大的長度。在運行時執(zhí)行的句法如下:
SET [SESSION | GLOBAL] group_concat_max_len = unsigned_integer;
如果最大長度被設(shè)置,結(jié)果值被剪切到這個最大長度。GROUP_CONCAT() 函數(shù)是一個增強的 Sybase SQL Anywhere 支持的基本 LIST() 函數(shù)。如果只有一個列,并且沒有其它選項被指定,GROUP_CONCAT() 是向后兼容有極大限制的 LIST() 函數(shù)。LIST() 有一個缺省的排序次序。
示例 (譯者注):
mysql CREATE TABLE `ta` (
– `id` smallint(5) unsigned NOT NULL default 0 ,
– `name` char(60) NOT NULL default ,
– KEY `id` (`id`)
– ) TYPE=MyISAM;
Query OK, 0 rows affected (0.02 sec)
mysql INSERT INTO `ta` VALUES(1 , a),(1 , b),
– (1 , c),(1 , d),(2 , a),
– (2 , b),(2 , c),(3 , d
Query OK, 8 rows affected (0.03 sec)
Records: 8 Duplicates: 0 Warnings: 0
mysql SELECT * FROM `ta`;
+—-+——+
| id | name |
+—-+——+
| 1 | a |
| 1 | b |
| 1 | c |
| 1 | d |
| 2 | a |
| 2 | b |
| 2 | c |
| 3 | d |
+—-+——+
8 rows in set (0.00 sec)
mysql SELECT `id`,
– GROUP_CONCAT(`name`)
– FROM `ta`
– GROUP BY `id`;
+—-+———————-+
| id | GROUP_CONCAT(`name`) |
+—-+———————-+
| 1 | a c b d |
| 2 | a c b |
| 3 | d |
+—-+———————-+
3 rows in set (0.03 sec)
# SEPARATOR 缺省是一個空格而不是一個逗號
mysql SELECT `id`,
– GROUP_CONCAT(DISTINCT `name`
– ORDER BY `name` DESC SEPARATOR , ) AS Result
– FROM `ta`
– GROUP BY `id`;
+—-+———+
| id | Result |
+—-+———+
| 1 | d,c,b,a |
| 2 | c,b,a |
| 3 | d |
+—-+———+
3 rows in set (0.00 sec)
* 以上結(jié)果在 MySQL 4.1 中測試
上述就是丸趣 TV 小編為大家分享的 mysql 函數(shù)中的 GROUP_CONCAT 是怎樣用的了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。