首页 > 解决方案 > Mysql在同名组下显示其他不同的单元格数据

问题描述

假设我有一个存储注册用户数据的表,记录可能具有相同的注册名称但不同的电子邮件,如下所示:

在此处输入图像描述

我想创建一个前视图来操作这些数据,但我不希望那些同名重复显示,可以 mysql 语句查询输出结果,如

在此处输入图像描述

这是迄今为止我可以做到的结果,但它不能将同名绑定到一个。

    select * from `register` 
    where `fullname` in ( 
              select `fullname` from `register` 
              group by `fullname` having count(*) > 1 
    )

标签: mysqlgroup-by

解决方案


您可以做的一件事是SELECT DISTINCT对重复的行执行 a 操作,并利用GROUP_CONCAT();MYSQL 中的函数将您想要的值连接到一行中,并GROUP BY fullname获得您想要的顺序。

请注意,我还将用户 ID放入分组行中,以便您可以跟踪哪些ID属于哪个名称。

SELECT
  DISTINCT fullname as full_name,
  GROUP_CONCAT(id SEPARATOR ', ') as user_ids,
  GROUP_CONCAT(email SEPARATOR ', ') as emails
FROM 
  tbl_register
GROUP BY
  tbl_register.fullname

工作 SQL 小提琴

这将是这样做的合乎逻辑的方式。希望这有帮助。:)

GROUP_CONCAT();关于这里函数的更多信息: https ://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html#function_group-concat


推荐阅读