Write a SQL query to delete all duplicate email entries in a table named Person, keeping only unique emails based on its smallest Id.

+----+------------------+
| Id | Email |
+----+------------------+
| 1 | john@example.com |
| 2 | bob@example.com |
| 3 | john@example.com |
+----+------------------+

Id is the primary key column for this table.
For example, after running your query, the above Person table should have the following rows:

+----+------------------+
| Id | Email |
+----+------------------+
| 1 | john@example.com |
| 2 | bob@example.com |
+----+------------------+
DELETE p1 FROM Person p1 INNER JOIN Person p2 WHERE p1.Email = p2.Email AND p1.Id > p2.Id;

这里p1和p2都是Person的别名。inner join等于join。所以p1 join p2应该是以下的结果:

------+------+-----------------+
|P1.Id| p2.Id|Email |
+-----+------+-----------------+
| 1 | 1 | john@example.com |
| 2 | 2 | bob@example.com |
| 3 | 3 | john@example.com |
+----+-------------------------+
然后p1.id>p2.id所以id为3的被删除了,但是因为p1和p2都是person事实上,只有一个id。为了理解,写成了两列。

补充一些关于sql语句的知识:
  • sql表别名的用法:as

  select * from kettleoutputtable a
  where a.os =2 and storename = 'anzhi'

  和

  select * from kettleoutputtable as a
  where a.os =2 and storename = 'anzhi'


  等效,也就是说别名的as可以省略!在表明后直接加上简单的名字就行了。

 
 

leetcode【sql】 Delete Duplicate Emails的更多相关文章

  1. 【SQL】182. Duplicate Emails

    Write a SQL query to find all duplicate emails in a table named Person. +----+---------+ | Id | Emai ...

  2. [SQL]196. Delete Duplicate Emails

    Write a SQL query to delete all duplicate email entries in a table named Person, keeping only unique ...

  3. 【SQL】ON DUPLICATE KEY UPDATE

    在实际应用中,经常碰到导入数据的功能,当导入的数据不存在时则进行添加,有修改时则进行更新, 在刚碰到的时候,第一反应是将其实现分为两块,分别是判断增加,判断更新,后来发现在mysql中有 ON DUP ...

  4. 【sql】leetcode习题 (共 42 题)

    [175]Combine Two Tables (2018年11月23日,开始集中review基础) Table: Person +-------------+---------+ | Column ...

  5. 【SQL】关于无法附加文件的错误

    [SQL]关于无法附加文件的错误 1.错误信息如下: 2.估计是权限问题右击属性,把权限开一下 3.然后就附加成功了~~ ——————————————————————————————————————— ...

  6. 【SQL】Oracle分页查询的三种方法

    [SQL]Oracle分页查询的三种方法 采用伪列 rownum 查询前10条记录 ? 1 2 3 4 5 6 7 8 9 10 11 [sql] select * from t_user t whe ...

  7. 【SQL】用Sql Server自动生产html格式的数据字典

    原文:[SQL]用Sql Server自动生产html格式的数据字典 本文软件环境:Sql Server 2008. 1.打开sql server管理器,给选定的表添加描述信息,给指定的字段添加描述信 ...

  8. [LeetCode] Delete Duplicate Emails 删除重复邮箱

    Write a SQL query to delete all duplicate email entries in a table named Person, keeping only unique ...

  9. LeetCode——Delete Duplicate Emails(巧用mysql临时表)

    Write a SQL query to delete all duplicate email entries in a table named Person, keeping only unique ...

随机推荐

  1. Vijos 1981 跳石头 二分

    描述 一年一度的"跳石头"比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N 块岩 ...

  2. eclipse 配置ssh

    用maven 新建工程 ,然后在src 下面的main 文件夹下新建 java文件夹,在src新建test 文件夹,然后再在下面新建java文件夹然后在pom.xml中引入ssh的依赖, 最后在res ...

  3. Machine Learning and Data Mining Lecture 1

    Machine Learning and Data Mining Lecture 1 1. The learning problem - Outline     1.1 Example of mach ...

  4. View学习(三)- View的布局(layout)过程

    前段开始学习View的工作原理,前两篇博客的草稿都已经写好了,本想一鼓作气写完所有的相关文章,然后经历了一段连续加班,结果今天准备继续写文章时,把之前写好的东西都忘记了,又重新梳理了一遍,所以说那怕就 ...

  5. 针对Oracle数据库中SCOTT方案的多表查询一个例子

    查询出每个员工的姓名.职位.月薪.所属部门名.月薪等级及其领导的姓名.职位.所属部门名.月薪等级.select e.ename 员工姓名,e.job 员工职位,e.sal 员工月薪,d.dname 员 ...

  6. jquery-ajax实现文件上传异常处理web.multipart.MultipartException

    异常如下: org.springframework.web.multipart.MultipartException: The current request is not a multipart r ...

  7. python之二维码生成

    生成的二维码只是网址的链接 直接上代码: import qrcode title = input("要生成的内容:") img = qrcode.make(title) with ...

  8. 阿里云服务器怎么运行多个项目(Nginx)

    server { listen 80; server_name yy.test.cn; access_log /data/wwwlogs/access_nginx.log combined; root ...

  9. 《MVC实现用户权限》

    用树形的结构显示权限的结构,树形结构的用的是jquery的控件 1. 赋给用户一个userid,在用户角色表将用户和角色关联起来,在角色权限表中将角色和权限对应起来,权限表中存储的是菜单栏的名称. 2 ...

  10. android studio友盟分享

    这个东西搞了整整两天真是把我搞郁闷着了,官方demo下载后,根据提示的错误,修改了一个小bug之后,便能直接运行,但是不管我如何集成到自己app上,分享时APP都会黑屏Crash,并且代码都与官方de ...