MySQL:按邮箱分组并将关联手机号拼接至单列的查询方法
MySQL合并同一邮箱对应的多个手机号到单列
要实现将同一邮箱对应的多个手机号合并到同一列,直接使用MySQL内置的GROUP_CONCAT()函数即可,配合GROUP BY按邮箱分组:
基础查询语句
SELECT email, GROUP_CONCAT(phone SEPARATOR ', ') AS merged_phones FROM your_table_name GROUP BY email;
参数说明
GROUP_CONCAT(phone SEPARATOR ', '):将分组内的所有phone字段值用,(逗号加空格)拼接成字符串GROUP BY email:按邮箱字段分组,确保同一邮箱的所有记录被合并为一行
示例验证
假设你的表中有如下记录:
phone email 11111 mail@mail.com 22222 mail@mail.com 33333 mail@mail.com 44444 mail@mail.com
执行上述SQL后,会得到结果:
email merged_phones mail@mail.com 11111, 22222, 33333, 44444
进阶:去重与排序
如果存在重复手机号,可添加DISTINCT去重;如果需要按手机号排序后拼接,可加上ORDER BY:
SELECT email, GROUP_CONCAT(DISTINCT phone ORDER BY phone SEPARATOR ', ') AS merged_phones FROM your_table_name GROUP BY email;
内容的提问来源于stack exchange,提问作者Roberto Iglesias
相关产品推荐
相关产品推荐

