加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql函数中的GROUP_CONCAT是咋用的

发布时间:2023-07-06 13:39:55 所属栏目:MySql教程 来源:
导读:这期内容当中小编将会给大家带来有关mysql函数中的GROUP_CONCAT是怎样用的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。mysql函数之——GROUP_CONCAT完整句法如下

这期内容当中小编将会给大家带来有关mysql函数中的GROUP_CONCAT是怎样用的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

mysql函数之——GROUP_CONCAT

完整句法如下:

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 中测试

上述就是小编为大家分享的mysql函数中的GROUP_CONCAT是怎样用的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!