MySQL如何将去重后的用户姓名合并为单个列?
解决方案:将去重姓名合并为单列字符串
你的user表结构及数据如下:
| id | name |
|---|---|
| 1 | John |
| 2 | Matt |
| 3 | Matt |
你当前的查询仅能获取去重后的行数据,但无法实现姓名的单列合并。要得到格式为John, Matt的单列结果,可以利用MySQL的GROUP_CONCAT()函数结合去重逻辑实现:
方法一:直接去重合并
在GROUP_CONCAT中加入DISTINCT关键字,自动过滤重复姓名后合并为字符串:
SELECT GROUP_CONCAT(DISTINCT name SEPARATOR ', ') AS all_name FROM user;
该查询会返回一行数据,其中all_name列的值即为你需要的John, Matt。
方法二:分组去重后合并
先通过子查询分组获取不重复的姓名,再在外层进行合并:
SELECT GROUP_CONCAT(name SEPARATOR ', ') AS all_name FROM ( SELECT name FROM user GROUP BY name ) AS unique_names;
此方法结果与方法一完全一致,适合需要更明确去重逻辑的场景。
PHP中转换为数组
拿到查询结果后,可通过explode()函数将字符串转为数组:
// 假设$row为查询返回的关联数组 $nameArray = explode(', ', $row['all_name']); // 最终得到数组:['John', 'Matt']
内容的提问来源于stack exchange,提问作者Hiraeths
相关产品推荐
相关产品推荐

