MySql教程
MySql用户管理
MySQL数据库
MySql表格和视图
MySQL查询
MySQL索引
MySQL子句
MySQL授权
MySql控制流
MySQL条件
MySQL连接
MySQL键
MySQL触发器
MySQL聚合函数
MySQL常用
MySQL正则表达式
MySql差异性

MySQL GROUP_CONCAT()函数

MySQL中的GROUP_CONCAT()函数是一种聚合函数。此函数用于使用各种子句将多行中的字符串连接为单个字符串。如果组中至少包含一个非空值,则它将始终返回一个字符串值。否则,您将获得一个空值。
以下是GROUP_CONCAT()函数的语法:
GROUP_CONCAT(
    DISTINCT expression
    ORDER BY expression
    SEPARATOR sep
);
OR,
mysql> SELECT c1, c2, ....., cN
GROUP_CONcat ( 
   [DISTINCT] c_name1 
   [ORDER BY]  
   [SEPARATOR] ) 
FROM table_name GROUP BY c_name2;
以这种语法,
c1,c2,....,cN是表列。 c_name1是表列,每个组的值都将连接成一个字符串。 c_name2是用于执行分组的表列。
GROUP_CONCAT()函数的选项说明如下:
Distinct: 此子句在进行连接之前会删除组中的重复值。
ORDER BY: 它使我们可以按升序或降序对组数据进行排序,然后执行串联。默认情况下,它以升序执行排序。但是,您可以使用DESC选项显式地对值进行降序排序。
Separator: 默认情况下,此子句使用逗号(,)运算符作为分隔符。如果要更改默认的分隔符,则可以指定文字值。
注意: 此函数始终以二进制或非二进制字符串值返回结果,该结果取决于指定的参数。默认情况下,它返回等于1024的字符串值的最大长度。如果要增加此长度,可以使用group_concat_max_len系统变量。

GROUP_CONCAT()示例

让我们创建一个员工表,以了解此功能如何在 MySQL 使用不同的查询。
MySQL GROUP_CONCAT()功能
1、使用简单查询
mysql> SELECT emp_id, emp_fname, emp_lname, dept_id, 
GROUP_CONCAT(designation) as "designation" FROM employee group by emp_id;
此语句将给出以下输出:
MySQL GROUP_CONCAT()Function
<强> 2、使用DISTINCT子句
mysql> SELECT emp_fname, dept_id, 
GROUP_CONCAT(DISTINCT designation) as "designation" FROM employee group by emp_id;
成功执行上述语句后,我们将获得以下输出:
MySQL GROUP_CONCAT()功能
3、使用分隔符
mysql>SELECT emp_fname, 
GROUP_CONCAT(DISTINCT designation SEPARATOR '; ') as "designation" FROM employee group by emp_id; 
在这里,分隔子句将默认的返回字符串comma(,)更改为分号(;)和空格字符。
上面的语句将给出以下输出:
MySQL GROUP_CONCAT()函数

GROUP_CONCAT()和CONCAT_WS()

mysql>SELECT GROUP_CONCAT(CONCAT_WS(', ', emp_lname, emp_fname) SEPARATOR ';') as employeename FROM employee;
在此语句中,CONCAT_WS()函数首先将每个员工的名字和姓氏连接起来,并产生员工的全名。接下来,我们将GROUP_CONCAT()函数与分号(;)分隔子句结合使用,以在单个行中列出所有雇员。最后,执行该语句。成功执行后,我们将获得以下输出:
MySQL GROUP_CONCAT()Function
此函数在单行而不是值列表中返回结果。因此,我们不能使用 IN 运算符来使用GROUP_CONCAT()函数。如果我们将此函数与IN运算符配合使用,则该查询将无法工作,因为IN运算符接受值列表,而不是字符串。

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4