Mysql显示其他不同的单元格数据与同组下的组

时间:2018-06-08 08:08:19

标签: mysql group-by

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

enter image description here

我想创建一个前视图来操纵那些数据,但我不想让那些相同的名字反复显示,可以通过mysql语句查询输出结果如

enter image description here

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

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

2 个答案:

答案 0 :(得分:1)

您可以做的一件事是在重复行上执行SELECT DISTINCT,并使用MYSQL中的GROUP_CONCAT();函数将连接所需的值合并为一行和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

Working SQL Fiddle

这是合乎逻辑的做法。希望这有帮助。 :)

有关GROUP_CONCAT();功能的更多信息,请访问:https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html#function_group-concat

答案 1 :(得分:0)

试试这个:

SELECT DISTINCT *duplicate_column* FROM *table_name1* WHERE *col_id* IN (SELECT *cols_to_dusplay* FROM *table_name1* GROUP_BY *duplicate_column*