在 MySQL 中使用 GROUP_CONCAT() 连接多行数据?
mysqlmysqli database
首先我们创建一个表 −
mysql> create table DemoTable (CountryName varchar(100)); Query OK, 0 rows affected (1.01 sec)
使用 insert 命令在表中插入一些记录 −
mysql> insert into DemoTable values('US'); Query OK, 1 row affected (0.18 sec) mysql> insert into DemoTable values('AUS'); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable values('UK'); Query OK, 1 row affected (0.19 sec)
使用 select 语句显示表中的所有记录 −
mysql> select *from DemoTable;
这将产生以下输出 −
+-------------+ | CountryName | +-------------+ | US | | AUS | | UK | +-------------+ 3 rows in set (0.00 sec)
这是连接多行的查询。我们正在创建一个过程 −
mysql> DELIMITER // mysql> CREATE PROCEDURE searchDemo(in stringValue varchar(255), out output text) BEGIN select group_concat(distinct CountryName order by CountryName) into output from DemoTable where CountryName like stringValue; END // Query OK, 0 rows affected (0.18 sec) mysql> DELIMITER ;
使用call命令调用存储过程 −
mysql> call searchDemo('U%',@output); Query OK, 1 row affected, 2 warnings (0.04 sec)
让我们检查变量@output的值 −
mysql> select @output;
这将产生以下输出 −
+---------+ | @output | +---------+ | UK,US | +---------+ 1 row in set (0.00 sec)