LeetCode--196. 删除重复的电子邮箱

news/2025/2/12 17:56:38/

文章目录

  • 1 题目描述
  • 2 解题思路
    • 2.1 代码实现

1 题目描述

表: Person

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| email       | varchar |
+-------------+---------+

id 是该表的主键列(具有唯一值的列)。
该表的每一行包含一封电子邮件。电子邮件将不包含大写字母。

编写解决方案 删除 所有重复的电子邮件,只保留一个具有最小 id 的唯一电子邮件, 请注意你应该编写一个 DELETE 语句而不是 SELECT 语句

运行脚本后,显示的答案是 Person 表。驱动程序将首先编译并运行您的代码片段,然后再显示 Person 表。Person 表的最终顺序 无关紧要

返回结果格式如下示例所示。

示例 1:

输入:
Person 表:

+----+------------------+
| id | email            |
+----+------------------+
| 1  | john@example.com |
| 2  | bob@example.com  |
| 3  | john@example.com |
+----+------------------+

输出:

+----+------------------+
| id | email            |
+----+------------------+
| 1  | john@example.com |
| 2  | bob@example.com  |
+----+------------------+

解释: john@example.com 重复两次。我们保留最小的Id = 1

2 解题思路

  1. 使用 inner join,形成笛卡尔积
  2. 如果 email 相同,但是id不同说明有重复
  3. email 相同的, 需要把 id 大的删除,从而保留小id的数据

2.1 代码实现

  1. Person p1 inner join Person p2 on p1.email = p2.email, Person表内联自己, 查询 email 相同的数据
    image.png
    查询出来的数据 2, 3, 4 行是同一条数据关联自己
  2. where p1.id > p2.id 从 eamil 相同数据中筛选出不是同一条数据, 且 id 大的数据
    image.png
  3. delete p1 from Person p1 指定删除 p1 表中的数据

最终代码实现

delete p1 from Person p1 inner join Person p2 on p1.email = p2.email where p1.id > p2.id

http://www.ppmy.cn/news/1184626.html

相关文章

深入探究Python中的深度学习:神经网络与卷积神经网络

当下,深度学习已经成为人工智能研究和应用领域的关键技术之一。作为一个开源的高级编程语言,Python提供了丰富的工具和库,为深度学习的研究和开发提供了便利。本文将深入探究Python中的深度学习,重点聚焦于神经网络与卷积神经网络…

Git撤销已经push到远程分支的commit

有时想要撤销已经push到远程仓库的commit,将代码还原为commit之前的样子,应该如何做呢? 如果只有自己使用的分支:可以使用git reset命令 git log 查看需要还原的commitId,如下截图, 我们需要撤销ffe4a的…

Ubuntu服务器中java -jar 后台运行Spring Boot项目

问:我在我的服务器中java -jar 运行springboot项目,但是我操作不了命令了,必须要终止掉才能执行后面的操作,怎么样才能让他后台运行呢?比如我的jar包名是tools-boot-0.0.1-SNAPSHOT.jar 使用nohup命令: 在…

MySQL(2):环境搭建

1.软件下载 软装去官网下载(社区版):https://downloads.mysql.com/archives/installer/(历史版本可选) 选择下面的,一步到位 2.软件安装 双击 .msi 文件 选完 Custom 自定义后点 next 按 1&#xff0c…

Spring Cloud Gateway + Knife4j 4.3 实现微服务网关聚合接口文档

目录 前言Spring Cloud 整合 Knife4jpom.xmlapplication.ymlSwaggerConfig.java访问单服务接口文档 Spring Cloud Gateway 网关聚合pom.xmlapplication.yml访问网关聚合接口文档 接口测试登录认证获取登录用户信息 结语源码 前言 youlai-mall 开源微服务商城新版本基于 Spring…

【C语言】strcpy()函数(字符串拷贝函数详解)

🦄个人主页:修修修也 🎏所属专栏:C语言 ⚙️操作环境:Visual Studio 2022 目录 一.strcpy()函数简介 1.函数功能 2.函数参数 1>.char * destination 2>.const char * source 3.函数返回值 4.函数头文件 二.strcpy()函数的具体使用 1.使用s…

JavaEE-博客系统1(数据库和后端的交互)

本部分内容包括网站设计总述,数据库和后端的交互; 数据库操作代码如下: -- 编写SQL完成建库建表操作 create database if not exists java_blog_system charset utf8; use java_blog_system; -- 建立两张表,一个存储博客信息&am…

7.多线程之单例模式

单例模式 文章目录 单例模式1. 什么是单例模式2. 饿汉模式3. 懒汉模式3.1 单线程版:3.2 多线程版 1. 什么是单例模式 单例模式是一种设计模式,常见的设计模式还有工厂模式、建造者模式等。 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码…