【MySql】查找重复的电子邮箱

## 182.编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。

person表中数据:

+------+---------+
| Id   | Email   |
+------+---------+
|    1 | a@b.com |
|    2 | c@d.com |
|    3 | a@b.com |
+------+---------+

只查询重复的值:

select Email from person group by Email having count(Email)>1;

查询结果:

+---------+
| Email   |
+---------+
| a@b.com |
+---------+

查询重复的值及重复数量:

select Email,count(*) as count from person group by Email having count>1;

查询结果为:

+---------+-------+
| Email   | count |
+---------+-------+
| a@b.com |     2 |
+---------+-------+
### MySQL语句练习题及答案 #### 查找重复的电子邮件地址 为了查找 `Person` 表中所有具有重复电子邮箱的记录,可以使用如下SQL查询: ```sql SELECT email, COUNT(*) FROM Person GROUP BY email HAVING COUNT(*) > 1; ``` 此查询通过按 `email` 字段分组并统计每种邮件的数量来找出那些数量大于1的条目[^3]。 #### 找出同名不同ID的学生信息 对于寻找名字相同但是学号不同的学生的信息,有两种方法实现这一目标。一种方式是利用自连接(self join),另一种则是聚合函数配合条件过滤的方式: ##### 方法一:使用自联接 ```sql SELECT DISTINCT a.s_id, a.s_name, a.s_birth, a.s_sex FROM Student AS a JOIN Student AS b ON a.s_name = b.s_name AND a.s_id <> b.s_id; ``` 这种方法创建了一个虚拟表副本并与原始表相连,在此基础上筛选出符合条件的数据行[^2]. ##### 方法二:采用聚集函数 ```sql SELECT s_name, COUNT(*) FROM Student GROUP BY s_name HAVING COUNT(*) > 1; ``` 这里先按照学生的名称进行分组计算每个名字出现次数,再用 HAVING 子句保留只含有超过一次的名字. #### 计算特定班级学生的平均总分数 要获取某班次内所有学员的成绩均值,则需执行以下命令: ```sql SELECT AVG(t.sum_score) as average_score FROM ( SELECT SUM(score) as sum_score, sname FROM scoreresult GROUP BY sname ) t JOIN classes c ON c.sname = t.sname WHERE c.classid = 1; ``` 这段脚本首先构建子查询以获得每位同学各自的累计得分情况;之后借助外部链接操作符关联到班级详情表里,并最终限定所需分析的具体班级编号.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值