Mysql 向重复记录添加其他数据
我有一个代码,检查有多少重复代码:Mysql 向重复记录添加其他数据,mysql,sql,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 |
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)
任何非常受欢迎的建议添加电子邮件地址的最佳方法就是在select子句中添加该字段,并在group by子句中添加该字段,这将花费最少的时间 比如:-
SELECT code, count(code) as dup ,email_address from tg_user
group by code,email_address having dup>1 order by dup;
GROUP\u 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;