gpt4 book ai didi

mysql - 返回具有重复电子邮件的多个用户的不同电子邮件地址

转载 作者:行者123 更新时间:2023-11-29 08:30:31 25 4
gpt4 key购买 nike

我有一个包含以下字段的数据库

Create table users
{
id int NOT NULL,
username varchar(255),
email varchar(255),
signup_date date,
PRIMARY KEY(id)
}
Create index user_index
On users (username)

数据库允许多个用户拥有相同的用户名,因为我没有包含 unique 关键字。我编写了一个 SQL 查询,该查询将为表中具有多个实例的所有用户名生成用户名列表以及该用户名的最新 signup_date。

select username, MAX(signup_date)
group by username

但我还需要编写一个查询,该查询将为上述查询返回的所有用户名生成唯一电子邮件地址列表,我得出以下结果:

select distinct email
From users
Group by username
Having max(signup_date)

我的问题是我需要在having语句之后写一个条件吗?或者我只需要省略having子句就能得到想要的结果?

最佳答案

您的查询:

select username, MAX(signup_date)
from users
group by username;

将返回所有用户名。你没有过滤器。您的目标是“我还需要编写一个查询,该查询将为上述查询返回的所有用户名生成唯一电子邮件地址列表”。这些都是唯一的电子邮件地址。为此:

select distinct email
from users;

我认为你原来的查询应该是:

select username, MAX(signup_date)
from users
group by username
having count(*) > 1;

为了找到重复项。要获取重复项上的所有电子邮件地址,请使用 where 子句:

select distinct email
from users u
where u in (select username
from users
group by username
having count(*) > 1
)

要获取用户的所有电子邮件地址,请尝试:

select username, max(signupdate),
group_concat(distinct email separator ', ' order by signup_date desc)
from users
group by username
having count(*) > 1;

这将为您提供所有用户的所有电子邮件(以逗号分隔列表的形式),以及最长注册日期。

通过电子邮件地址获取所有用户:

select email, 
group_concat(distinct username separator ', ' order by signup_date desc)
from users
group by email

关于mysql - 返回具有重复电子邮件的多个用户的不同电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16739953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com