在MariaDB中将查询结果转换为逗号分隔的列表
发布于
在 MariaDB 中,我们可以使用该函数以逗号分隔的列表形式返回我们的查询结果。我的意思是,对于给定的列,我们可以将所有行转换为一行,其中包含构成该列的值的逗号分隔列表。每一行都是列表中的一个单独项目。GROUP_CONCAT()
示例
假设我们运行以下查询:
SELECT meal
FROM guest_meals;
输出:
+---------+
| meal |
+---------+
| Salad |
| Fish |
| Burrito |
| Pasta |
| Salad |
| Salad |
+---------+
6 rows in set (0.001 sec)该查询生成了六行。
我们可以将这些行转换为一个逗号分隔的行,如下所示:
SELECT GROUP_CONCAT(meal)
FROM guest_meals;
输出:
+--------------------------------------+
| GROUP_CONCAT(meal) |
+--------------------------------------+
| Salad,Fish,Burrito,Pasta,Salad,Salad |
+--------------------------------------+
1 row in set (0.003 sec)更改分隔符
我们可以通过将其传递给函数来指定我们自己的分隔符,并以关键字为前缀:SEPARATOR
SELECT GROUP_CONCAT(meal SEPARATOR ' + ')
FROM guest_meals;
输出:
Salad + Fish + Burrito + Pasta + Salad + Salad对结果进行排序
我们可以通过在函数中使用子句对结果进行排序:ORDER BY
SELECT GROUP_CONCAT(meal ORDER BY meal ASC)
FROM guest_meals;
输出:
Burrito,Fish,Pasta,Salad,Salad,Salad仅返回唯一值
我们可以使用子句只返回唯一值:DISTINCT
SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC)
FROM guest_meals;
输出:
Burrito,Fish,Pasta,Salad限制结果
我们可以使用子句来限制列表中的项目数:LIMIT
SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC LIMIT 3)
FROM guest_meals;
输出:
Burrito,Fish,Pasta分组查询
该函数在运行分组查询时非常方便。有关示例,请参阅 MariaDB GROUP_CONCAT()。GROUP_CONCAT()