作者:海底来的沙3 | 来源:互联网 | 2023-09-24 10:48
篇首语:本文由编程笔记#小编为大家整理,主要介绍了Mysql显示其他不同的单元格数据与同组下的组相关的知识,希望对你有一定的参考价值。
假设我有一个存储注册用户数据的表,这些记录可能具有相同的注册名称但不同的电子邮件,如下所示:
![enter image description here](https://img6.php1.cn/3cdc5/c369/2be/494320453f8682e5.png)
我想创建一个前视图来操纵那些数据,但我不希望那些同名显示,可以通过mysql语句查询输出结果如
![enter image description here](https://img6.php1.cn/3cdc5/c369/2be/5c9e3171e8dc70d1.png)
到目前为止,这是我可以做的结果,但它不能将同一个名称绑定到一个。
select * from `register`
where `fullname` in (
select `fullname` from `register`
group by `fullname` having count(*) > 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
另一答案
试试这个:
SELECT DISTINCT *duplicate_column* FROM *table_name1* WHERE *col_id* IN (SELECT *cols_to_dusplay* FROM *table_name1* GROUP_BY *duplicate_column*