mysql - 向重复记录添加附加数据

标签 mysql sql

我有这个代码可以检查有多少重复代码:

mysql> SELECT code, count(code) as dup from tg_user group by code having dup>1 order by dup;

返回:

+------------+-----+
| CCC002     |   5 |
| BAR003     |   6 |
| FIR001     |   6 |
| NJS001     |   6 |
| DEL004     |   6 |
| BRA009     |   7 |
| TSH011     |  11 |
| SHO005     |  19 |
+------------+-----+
432 rows in set (0.08 sec)

表结构为:

mysql> describe tg_user;
+---------------+--------------+------+-----+---------+----------------+
| Field         | Type         | Null | Key | Default | Extra          |
+---------------+--------------+------+-----+---------+----------------+
| user_id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| user_name     | varchar(30)  | YES  | UNI | NULL    |                |
| email_address | varchar(255) | YES  | UNI | NULL    |                |
| code          | varchar(25)  | YES  |     | NULL    |                |
+---------------+--------------+------+-----+---------+----------------+
32 rows in set (0.00 sec)

为每个重复记录添加电子邮件地址的正确方法是什么,以便它作为列表出现,如下所示:

| SHO005     |  19 | name@domai.tld, name@domai.tld...       |
+------------+-----+-----------------------------------------+
432 rows in set (0.08 sec)

非常感谢任何建议

最佳答案

GROUP_CONCAT 用逗号连接值。 添加 DISTINCT 以过滤掉重复项

SELECT code, count(code) as dup, GROUP_CONCAT(DISTINCT email_address)
from tg_user group by code having dup>1 order by dup;

关于mysql - 向重复记录添加附加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22615867/

相关文章:

mysql - 使用链接服务器将参数化动态查询从 SQL Server 传递到 MySQL 数据库时出现问题

选择查询中的 SQL 条件变量

MySQL从属性表WHERE条件多行中选择一个字段

sql - 根据foreign_key值更新每行中的值

mysql - 如果其中一列具有多个值之一,则选择一行的 SQL 选择查询?

sql - 如何创建在日期更改时更新的 SQL 表

sql - 创建动态选择案例 (vb)

python - 磁盘存储已满时 MySQL 套接字出错

php - 在 mysql 中查找日期范围内的结果无法正常工作

php - 这段代码的事务和回滚