mysql函式之——GROUP_CONCAT(轉)
mysql函式之——GROUP_CONCAT(轉)[@more@]內容來自mysql手冊,事例為手冊中編者所加
GROUP_CONCAT(expr)
完整句法如下:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]]
[SEPARATOR str_val])
這個函式在 MySQL 4.1 中被加入。函式返回一個字串結果,該結果由分組中的值連線組合而成:
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 要以設定一個最大的長度。在執行時執行的句法如下:
SET [SESSION | GLOBAL] group_concat_max_len = unsigned_integer;
如果最大長度被設定,結果值被剪下到這個最大長度。 GROUP_CONCAT() 函式是一個增強的 Sybase SQL Anywhere 支援的基本 LIST() 函式。如果只有一個列,並且沒有其它選項被指定,GROUP_CONCAT() 是向後相容有極大限制的 LIST() 函式。 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 中測試
GROUP_CONCAT(expr)
完整句法如下:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]]
[SEPARATOR str_val])
這個函式在 MySQL 4.1 中被加入。函式返回一個字串結果,該結果由分組中的值連線組合而成:
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 要以設定一個最大的長度。在執行時執行的句法如下:
SET [SESSION | GLOBAL] group_concat_max_len = unsigned_integer;
如果最大長度被設定,結果值被剪下到這個最大長度。 GROUP_CONCAT() 函式是一個增強的 Sybase SQL Anywhere 支援的基本 LIST() 函式。如果只有一個列,並且沒有其它選項被指定,GROUP_CONCAT() 是向後相容有極大限制的 LIST() 函式。 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 中測試
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-961919/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL函式Group_concat用法SQL函式
- MySQL - 分組連線欄位函式GROUP_CONCAT的使用MySql函式
- 轉MySQL--mysql常用函式打全MySql函式
- MySQL的GROUP_CONCAT函式輕鬆解決多表聯查的聚合問題MySql函式
- 《MySQL 入門教程》第 14 篇 MySQL 常用函式之數學函式MySql函式
- mysql~GROUP_CONCAT實現關係表的行轉列MySql
- mysql之常用函式(核心總結)MySql函式
- 【MySQL】MySQL如何合併多行資料,行轉列,group_concat 多行合併MySql
- MySQL索引失效之隱式轉換MySql索引
- MySQL 函式MySql函式
- MySQL函式MySql函式
- MySQL(四)日期函式 NULL函式 字串函式MySql函式Null字串
- Mysql 常用函式(20)- ceiling 函式MySql函式
- Mysql 常用函式(15)- upper 函式MySql函式
- 地理位置geo處理之mysql函式MySql函式
- MySQL 常用函式MySql函式
- MySQL函式(一)MySql函式
- mysql函式大全MySql函式
- 14 mysql 函式MySql函式
- MySQL 常用函式。MySql函式
- MySQL函式大全(字串函式,數學函式,日期函式,系統級函式,聚合函式)MySql函式字串
- mysql FIND_IN_SET函式、INSTR函式MySql函式
- MySQL函式-條件判斷函式MySql函式
- MySQL函式學習(一)-----字串函式MySql函式字串
- SQL程式設計:group by合併結果字串 —> group_concat函式就能行SQL程式設計字串函式
- MySQL拼接字串,GROUP_CONCAT 值得擁有MySql字串
- Mysql 常用函式(1)- 常用函式彙總MySql函式
- Kotlin之“with”函式和“apply”函式Kotlin函式APP
- Python 擴充之特殊函式(lambda 函式,map 函式,filter 函式,reduce 函式)Python函式Filter
- MySQL 內建函式MySql函式
- Mysql視窗函式MySql函式
- 《MySQL 入門教程》第 16 篇 MySQL 常用函式之日期函式MySql函式
- Django筆記二十四之資料庫函式之比較和轉換函式Django筆記資料庫函式
- 11. 使用MySQL之使用資料處理函式MySql函式
- MySQL之儲存函式詳細介紹艹籟MySql儲存函式
- MySql之json_extract函式處理json欄位MySqlJSON函式
- MySQL入門系列:查詢簡介(三)之表示式和函式MySql函式
- 常見函式之單行函式函式
- MySQL:MySQL層比較函式呼叫MySql函式