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

问题描述 投票:0回答:2

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

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 
    )
mysql group-by
2个回答
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


0
投票

试试这个:

SELECT DISTINCT *duplicate_column* FROM *table_name1* WHERE *col_id* IN (SELECT *cols_to_dusplay* FROM *table_name1* GROUP_BY *duplicate_column*
© www.soinside.com 2019 - 2024. All rights reserved.