假设我有一个存储注册用户数据的表,这些记录可能具有相同的注册名称但不同的电子邮件,如下所示:
我想创建一个前视图来操纵那些数据,但我不想让那些相同的名字反复显示,可以通过mysql语句查询输出结果如
这是迄今为止我可以做的结果,但它不能将同一个名称绑定到一个。
select * from `register`
where `fullname` in (
select `fullname` from `register`
group by `fullname` having count(*) > 1
)
答案 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
这是合乎逻辑的做法。希望这有帮助。 :)
有关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*