要在MySQL中使用GROUP BY连接字符串,您需要将GROUP_CONCAT()与SEPARATOR参数一起使用,该参数可能是逗号(')或空格('')等。
语法如下:
SELECT yourColumnName1,GROUP_CONCAT(yourColumnName2 SEPARATOR ‘yourValue’) as anyVariableName FROM yourTableName GROUP BY yourColumnName1;
为了理解上述语法,让我们创建一个表。创建表的查询如下:
mysql> create table GroupConcatenateDemo -> ( -> Id int, -> Name varchar(20) -> );
使用insert命令在表中插入一些记录。插入记录的查询如下:
mysql> insert into GroupConcatenateDemo values(10,'Larry'); mysql> insert into GroupConcatenateDemo values(11,'Mike'); mysql> insert into GroupConcatenateDemo values(12,'John'); mysql> insert into GroupConcatenateDemo values(10,'Elon'); mysql> insert into GroupConcatenateDemo values(10,'Bob'); mysql> insert into GroupConcatenateDemo values(11,'Sam');
使用select语句显示表中的所有记录。查询如下:
mysql> select *from GroupConcatenateDemo;
以下是输出:
+------+-------+ | Id | Name | +------+-------+ | 10 | Larry | | 11 | Mike | | 12 | John | | 10 | Elon | | 10 | Bob | | 11 | Sam | +------+-------+ 6 rows in set (0.00 sec)
这是使用GROUP BY连接MySQL中字符串的查询。在Id的基础上执行GROUP BY,并在MySQL中使用GROUP_CONCAT()函数连接字符串。
查询如下:
mysql> select Id,group_concat(Name SEPARATOR ',') as GroupConcatDemo from GroupConcatenateDemo -> group by Id;
以下是输出:
+------+-----------------+ | Id | GroupConcatDemo | +------+-----------------+ | 10 | Larry,Elon,Bob | | 11 | Mike,Sam | | 12 | John | +------+-----------------+ 3 rows in set (0.00 sec)