【LeetCode-SQL每日一练】—— 182. 查找重复的电子邮箱

🎈写在前面

  🙋‍♂️大家好呀,我是超梦。小伙伴们都知道,不管是在学习中还是日常工作中,几乎天天是要跟【数据库】打交道的,为了更好的操作数据库,我们的SQL【知识储备】是必不可少的。想要掌握好SQL,那少不了每天的练习与学习。接下来小梦会带领小伙伴们一起每天刷一道LeetCode-数据库(SQL)相关的题目,然后在文章后例举相关知识点帮助小伙伴们学习与巩固,更好的掌握SQL。

   🙋‍♂️ 小伙伴们如果在学习过程中有不明白的地方,欢迎评论区留言提问,小梦定知无不言,言无不尽。

47488cb109784cd6bb088f971d936590.gif


目录

🍕题目概述

🍕解题思路

🍟方法1

🍟方法2

🍟方法3

🍕代码执行测试

🍟方法1

🍟方法2

🍟方法3

🍕知识点小结


🍕题目概述

题目:

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

Person表

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

根据以上输入,你的查询应返回以下结果:

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

🍕解题思路

        其实这道题很简单啦,相信小伙伴们心中已经知道该怎么做了,赶紧去LeetCode挥笔写下答案测试一番吧!!测试完可以再看看小梦与大家的思路是否一致呢,如果有多种思路,欢迎留言写下你们的思路与解法,大家互相学习学习~

        根据题意,要找出表中所有重复的电子邮箱,也就是Email字段对应的数据有重复的我需要查找出来。那我们可以使用count函数来获取Email中各电子邮箱的数量,只要数量大于1就是题目中要求的。接下来,根据该思路,小梦列出一下三种解法,小伙伴们如果有其它思路,欢迎补充~

🍟方法1

我们可以先查出Email和对应Email的个数,把查出的内容当作一个临时表,在通过查该临时表,找出Email数量大于的1的,这样我们就查找出了题目所要求的【找出表中所有重复的电子邮箱】。

题解:

select Email from
(select Email, count(Email) as num from Person group by Email) as temporary
where num > 1;

🍟方法2

我们可以通过group by对Email进行分组,然后通过having进行条件筛查,having后面可以运用聚合函数非常方便(知识点小结部分会有group by与having的简单讲解,小伙伴们记得查阅哦~)。通过聚合函数count(Email)在having后进行条件筛查,找出Email个数大于1的,这样我们就查找出了题目所要求的【找出表中所有重复的电子邮箱】。

题解:

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

🍟方法3

第三种方法大家可以发散一下思维,如果不用count函数怎么知道重复的Email呢?怎么查呢?小梦来带小伙伴们一起思考,首先我们可以想想,前两种方法实质上都是通过查出Email数判断是否大于1,大于1就是我们所要的答案,不大1就不是。那大家有没有注意表Person虽然Email有重复的,但是id是唯一的,那我们就可以把Person表看成两张表,一张a表和一张b表。连接两张表,where语句后面加上a表的Email等于b表的Email和a表的id不等于b表的id。然后查询Email做去重操作,就得到了我们想要的答案。

题解:

select distinct  a.Email from Person a,Person b where a.Email = b.Email and a.id <> b.id;

🍕代码执行测试

🍟方法1

select Email from
(select Email, count(Email) as num from Person group by Email) as temporary
where num > 1;

输入题解,进行测试

5e699d898b724349b1e581c461675a9b.png

 测试成功!

81f627166e5f4aee90b29271ade679ae.png

🍟方法2

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

输入题解,进行测试

b9234277cc894f608a92a2788388a550.png

 测试成功!

3055390eac144c48b18c7f45cf7f2d48.png

🍟方法3

select distinct  a.Email from Person a,Person b where a.Email = b.Email and a.id <> b.id;

输入题解,进行测试

f677b6734ed2426f8a6439429780f482.png

测试成功!

02af12dc3fe04fa78db923e50739477a.png


🍕知识点小结

通过今天这一道题,小梦觉得有个知识点是需要简单分享一下的,那就是gruop by子句和having子句。group by与having的语法什么的小梦在这里就不一一细说了,小梦简单说一下group by与having在使用时一些需要注意的地方,希望小伙伴们用心记下来,绝对有用!

GROUP BY(数据分组)与HAVING子句

SQL中的数据可以按列名分组,可以搭配聚合函数一起使用,方便我们对于数据的查询与获取。

例:

SELECT count(stuname) FROM student GROUP BY student_class;

使用GROUP BY分组语句可以与WHERE语句一起使用,当然这里有个非常重要的地方希望小伙伴们记下来,非常重要!->当一条SQL中有聚合函数,WHERE语句,GRUOP BY语句时,他们的执行顺序是怎么的呢?WHERE >GROUP BY>聚合函数。 

所以在WHERE语句执行过滤条件中我们不能使用聚合函数,使用的话就会报错,在这我们可以使用HAVING子句执行过滤条件筛查时使用聚合函数。小伙伴们一定要记住!


最后呢小梦再分享一下SQL查询语句各关键字的执行顺序,可以拿小本本记一下了,有用的很~

【重点】SQL的执行顺序:

  1. 先执行FROM
  2. 再执行WHERE条件过滤
  3. 再执行GROUP BY分组
  4. 再执行SELECT,聚集函数
  5. 再执行HAVING条件过滤
  6. 再执行ORDER BY 排序

4737c996f9904c858f18ca1766347073.png

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438374.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【你会用代码画年兽吗】20行代码使用JS实现虎年春节倒计时 —— 红红火火过虎年

&#x1f34a;前言 &#x1f34a;哈喽小伙伴们好呀&#xff0c;我是超梦&#xff0c;大家可以叫我小梦~&#xff0c;马上就要过虎年春节啦&#xff0c;在新的一年里祝愿大家&#x1f42f;身体健康&#xff0c;&#x1f42f;平平安安&#xff0c;&#x1f42f;虎气冲天&#xf…

【LeetCode-SQL每日一题】——183. 从不订购的客户

&#x1f388;写在前面 &#x1f64b;‍♂️大家好呀&#xff0c;我是超梦。小伙伴们都知道&#xff0c;不管是在学习中还是日常工作中&#xff0c;几乎天天是要跟数据库打交道的&#xff0c;为了更好的操作数据库&#xff0c;我们的SQL知识储备是必不可少的。想要掌握好SQL&am…

c#进阶(1)—— Task Parallel Library 并行执行与串行执行

本文参考的博文出处&#xff1a;http://www.cnblogs.com/stoneniqiu/p/4857021.html 总体说明&#xff1a; &#xff08;1&#xff09;、理解硬件线程和软件线程 硬件线程也称为逻辑内核&#xff0c;一个物理内核可以使用超线程技术提供多个硬件线程。所以一个硬件线程并不代…

【leetcodeMySQL每周一练】- 5道题带你练习mysql

&#x1f388;写在前面 &#x1f64b;‍♂️大家好呀&#xff0c;我是超梦。小伙伴们都知道&#xff0c;不管是在学习中还是日常工作中&#xff0c;几乎天天是要跟数据库打交道的&#xff0c;为了更好的操作数据库&#xff0c;我们的SQL知识储备是必不可少的。想要掌握好SQL&am…

【读书笔记】.Net并行编程高级教程--Parallel

一直觉得自己对并发了解不够深入&#xff0c;特别是看了《代码整洁之道》觉得自己有必要好好学学并发编程&#xff0c;因为性能也是衡量代码整洁的一大标准。而且在《失控》这本书中也多次提到并发&#xff0c;不管是计算机还是生物都并发处理着各种事物。人真是奇怪&#xff0…

【除夕最炫烟花代码】—— HTML+JQuery实现2022跨年烟花特效

&#x1f387;前言 大家好呀&#xff01;我是小梦是✨。 除夕马上到来&#xff0c;激动的心颤动的手&#xff01;今年由于管控严厉&#xff0c;许多地方禁止燃放烟花爆竹&#xff0c;既然不让我们放&#xff0c;那我们就用代码来实现烟花特效&#xff01; 文末有彩蛋哦~ 烟花效…

【LeetCode-SQL每日一练】—— 595. 大的国家

&#x1f388;写在前面 &#x1f64b;‍♂️大家好呀&#xff0c;我是超梦。大家可以叫我小梦~ 小伙伴们都知道&#xff0c;不管是在学习中还是日常工作中&#xff0c;几乎天天是要跟数据库打交道的&#xff0c;为了更好的操作数据库&#xff0c;我们的SQL知识储备是必不可少的…

c#进阶(2)—— ASP.NET MVC 常用路由总结

1、URL模式 路由系统用一组路由来实现它的功能&#xff0c;这些路由共同组成了应用系统URL架构或方案&#xff0c;这种URL架构是应用程序能够识别并能对之做出响应的一组URL&#xff0c;当处理一个输入 请求时&#xff0c;路由系统的工作是将这个请求URL与一个模式进行匹配&am…

【爱心代码大全】——情人节表白代码送给她属于我们程序员的浪漫

&#x1f474;大多数人以为的程序员——发量少&#xff0c;身穿格子褂&#xff0c;坐在电脑前就是码字。一点也不懂浪漫&#xff01; 谁说我们不懂浪漫的&#xff1f; 不&#xff01; 你错了 程序员一旦浪漫起来&#xff0c;真没其他人啥事了&#xff01;&#xff01;&#xff…

c#进阶(4)—— Redis 用于消息队列的存储

1、参考的博文 a : http://www.cnblogs.com/lori/archive/2012/04/12/2443708.html —— 主要的实现思路 b: http://www.cnblogs.com/liqingwen/archive/2017/04/06/6672452.html —— RedisHelper 类 c : https://www.cnblogs.com/stopfalling/p/5375492.html —— 应用场…

【LeetCode-SQL每日一练】—— 196. 删除重复的电子邮箱

&#x1f388;写在前面 &#x1f64b;‍♂️大家好呀&#xff0c;我是超梦。大家可以叫我小梦~ 小伙伴们都知道&#xff0c;不管是在学习中还是日常工作中&#xff0c;几乎天天是要跟数据库打交道的&#xff0c;为了更好的操作数据库&#xff0c;我们的SQL知识储备是必不可少的…

【情人节表白代码】——情人节将至,10余款浪漫爱心特效送给你爱的那个她

谁说我们不懂浪漫的&#xff1f; 不&#xff01; 你错了 程序员一旦浪漫起来&#xff0c;那就是个bug&#xff01;&#xff01;&#xff01; 浪漫表白一 代码部分 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/…

c#进阶(6)—— 网络通信基础知识

1、HttpClient 类 (1)、HttpClient 类 用于发送HTTP 请求&#xff0c;接收请求的响应。 (2)、HttpClient 类 派生于 HttpMessageInvoker类&#xff0c;此基类负责执行 SendAsync(),SendAsync() 方法调用是异步的&#xff0c;可以编写一个完全异步的系统来调用Web服务。 2、实…

【云原生】—— 学习云计算应用开发你需要掌握的五大技能

学习云计算应用开发之前&#xff0c;我们首先了解一下什么是云计算。 云计算百度百科&#xff1a;云计算&#xff08;cloud computing&#xff09;是分布式计算的一种&#xff0c;指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序&#xff0c;然后&#xff0c;…

c#进阶(5)—— WCF 实现简单预订功能

1、WCF概述 WCF全称为Windows Communication Foundation,在.Net 3.0 中引入&#xff0c;用于客户端与服务端通信&#xff0c;替换了之前的一些技术&#xff0c;如.Net Remoting 及 WSE。 WCF 相比ASP.NET Web API 复杂&#xff0c;但提供了更多的功能&#xff0c;如 &#x…

云原生架构重要组成部分之微服务

前言 近几年来&#xff0c;云计算与微服务架构非常火&#xff0c;运用广泛。各大厂商公司都运用了该技术架构&#xff0c;随着技术与理念的升级迭代&#xff0c;云原生概念应世而起&#xff0c;现在火的一塌糊涂。做为新时代的程序员&#xff0c;我们要抓住云原生的浪潮。 这篇…

第十届蓝桥杯——JAVA真题集锦

蓝桥杯百度百科&#xff1a; 蓝桥杯全国软件和信息技术专业人才大赛是由工业和信息化部人才交流中心举办的全国性IT学科赛事。共有北京大学、清华大学、上海交通大学等全国1200余所高校参赛&#xff0c;累计参赛人数超过40万人。2020年&#xff0c;蓝桥杯大赛被列入中国高等教育…

IIS与asp.net管道

阅读目录 asp.net是什么HTTP协议IIS与asp.netasp.net管道参考资料我们在基于asp.net开发web程序&#xff0c;基本上都是发布部署到安装了IIS的windows服务器上&#xff0c;然后只要用户能够访问就算任务完成了&#xff0c;但是很少静下心来想想这背后到底发生了什么&#xff0…

2022最新Spring相关大厂常问技术面试题大全 —— 金三银四好时机

Spring相关大厂常问面试题1. 什么是 Spring 框架?2. 列举一些重要的Spring模块&#xff1f;3. RestController 与 Controller 的区别4. 谈谈自己对于 Spring IoC 和 AOP 的理解5. Spring 中的 bean 的作用域有哪些?6. Spring 中的单例 bean 的线程安全问题了解吗7. Component…

C#进阶系列——AOP?AOP!

前言&#xff1a;今天大阅兵&#xff0c;可是苦逼的博主还得坐在电脑前写博客&#xff0c;为了弄清楚AOP&#xff0c;博主也是拼了。这篇打算写写AOP&#xff0c;说起AOP&#xff0c;其实博主接触这个概念也才几个月&#xff0c;了解后才知道&#xff0c;原来之前自己写的好多代…