溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql函數(shù)中的GROUP_CONCAT是怎樣用的

發(fā)布時間:2021-12-06 09:10:11 來源:億速云 閱讀:113 作者:柒染 欄目:MySQL數(shù)據(jù)庫

這期內容當中小編將會給大家?guī)碛嘘Pmysql函數(shù)中的GROUP_CONCAT是怎樣用的,文章內容豐富且以專業(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ù)返回一個字符串結果,該結果由分組中的值連接組合而成:
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 中,你可以得到表達式結合體的連結值。通過使用 DISTINCT 可以排除重復值。如果希望對結果中的值進行排序,可以使用 ORDER BY 子句。為了以倒序排序,可以在 ORDER BY 子句中用于排序的列名后添加一個 DESC (遞減 descending) 關鍵詞。缺省為升序;這也可以通過使用 ASC 關鍵詞明確指定。 SEPARATOR 是一個字符串值,它被用于插入到結果值中。缺省為一個逗號 (",")。你可以通過指定 SEPARATOR "" 完全地移除這個分隔符。 在你的配置中,通過變量 group_concat_max_len 要以設置一個最大的長度。在運行時執(zhí)行的句法如下:
SET [SESSION | GLOBAL] group_concat_max_len = unsigned_integer;

如果最大長度被設置,結果值被剪切到這個最大長度。 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)

* 以上結果在 MySQL 4.1 中測試

上述就是小編為大家分享的mysql函數(shù)中的GROUP_CONCAT是怎樣用的了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI