mysql - Mysql在同名组下显示其他不同的单元格数据
问题描述
假设我有一个存储注册用户数据的表,记录可能具有相同的注册名称但不同的电子邮件,如下所示:
我想创建一个前视图来操作这些数据,但我不希望那些同名重复显示,可以 mysql 语句查询输出结果,如
这是迄今为止我可以做到的结果,但它不能将同名绑定到一个。
select * from `register`
where `fullname` in (
select `fullname` from `register`
group by `fullname` having count(*) > 1
)
解决方案
您可以做的一件事是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
这将是这样做的合乎逻辑的方式。希望这有帮助。:)
GROUP_CONCAT();
关于这里函数的更多信息: https ://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html#function_group-concat
推荐阅读
- python - 带有 .toml 配置和预提交钩子的 Flakehell
- list - 我应该如何删除列表中的非数字使用序言
- python - 为 Djoser 中未激活的用户返回适当的错误
- ruby-on-rails - 如何使用表单在 Ruby on Rails 中设置参数值(对于 Scope)?
- laravel - 确定多个集合对象的状态
- javascript - 确定元素是否已滚动到视图中
- python - 检查条件后如何在熊猫数据框中分配项目?
- r - R函数用于折叠从宽格式到长格式的不同列的多个范围?
- css - 我对 mystyle.css(pmwiki 中的 vanilla5 皮肤)的更改不起作用
- javascript - 如何根据上一个标题更改下一页的标题?