【SQL】Delete使用

server/2025/1/11 9:00:52/

目录

语法

需求

示例

分析

代码


语法

DELETE删除表中所需内容

删除表中满足特点条件的行:DELETE FROM 表名 WHERE 条件;

删除表中所有行:DELETE FROM 表名;

WHERE子句

WHERE子句用于指定从表中选取记录的条件。允许筛选数据,只返回满足特定条件的记录。WHERE子句可以包含各种条件,这些条件可以基于一个或多个列的值。可以使用逻辑运算符(如ANDORNOT)来组合多个条件。后文示例可供提供and和not的用法。

子查询

子查询(Sub Query)或称为内查询(Inner Query)、嵌套查询(Nested Query),是SQL语言中一种常用的程序模块,用于在一个查询语句中嵌套另一个查询语句。当一个查询的结果是另一个查询的条件时,这个查询就被称为子查询。

  • 子查询必须括在圆括号中。
  • 子查询SELECT子句通常只有一个列,除非主查询中多个列与子查询中的列进行比较。
  • 子查询不能直接使用ORDER BY,但可以在子查询中使用GROUP BY。
  • 返回多行数据的子查询只能与多值操作符(如IN)一起使用。

需求

表:Person

±------------±--------+
| Column Name | Type |
±------------±--------+
| id | int |
| email | varchar |
±------------±--------+
id 是该表的主键列(具有唯一值的列)。
该表的每一行包含一封电子邮件。电子邮件将不包含大写字母。

编写解决方案删除所有重复的电子邮件,只保留一个具有最小id的唯一电子邮件。

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

示例

输入:
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。

分析

编写解决方案删除所有重复的电子邮件,只保留一个具有最小id的唯一电子邮件。

相当于删除所有id较大且重复的电子邮箱

仅提供一个Person表,包含id和email

可以直接作笛卡尔积,比较id大小和电子邮箱,删除所有id较大且相同的电子邮箱

通过where语句和and并列即可实现,where a.id>b.id and a.email=b.email

同样的思路,也可以通过子查询实现

通过子查询查找id最小的电子邮箱,

select min(id) as id from Person group by email

再通过where not in 剔除其他信息

where id not in
(
select id from
(
select min(id) as id
from Person
group by email
) u
)

代码

delete a
from Person a, Person b
where a.id>b.id and a.email=b.email

OR

delete from Person
where id not in 
(select id from (select min(id) as id from Person group by email) a
)


http://www.ppmy.cn/server/157418.html

相关文章

[IoT]详细设计:智能农业监控系统

以下是基于IoT的智能农业监控系统网络拓扑的详细设计: 网络拓扑详细设计 1. 星型与网状混合拓扑 中心节点:本地服务器或集中控制器作为中心节点,负责协调和管理整个网络。传感器/执行器节点:分布在农田中,负责数据采…

STL——二叉搜索树

目录 二叉搜索树的概念 ⼆叉搜索树的性能分析 ⼆叉搜索树的插⼊ ⼆叉搜索树的查找 ⼆叉搜索树的删除 中序遍历结果为升序序列 二叉搜索树的概念 ⼆叉搜索树⼜称⼆叉排序树,它或者是⼀棵空树,或者是具有以下性质的⼆叉树 • 若它的左⼦树不为空&#…

云原生周刊:K8s 生态系统的五大趋势预测

开源项目推荐 Burrito Burrito 是一款 TACoS(Terraform Automation and Collaboration Software)Kubernetes Operator,旨在提供类似 Argo CD 的体验,用于管理和自动化 Terraform 工作流。通过 Burrito,用户可以在 Ku…

C#Halcon找线封装

利用CreateMetrologyModel封装找线工具时,在后期实际应用调试时容易把检测极性搞混乱,造成检测偏差,基于此,此Demo增加画线后检测极性的指引,首先看一下效果 加载测试图片 画线 确定后指引效果 找线效果 修改显示 UI代…

详细分析 创建并上传到 GitHub 仓库

目录 前言1. 从零创建并上传代码到 GitHub2. 将现有的本地仓库推送到 GitHub 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 创建仓库的时候,平台已经有所提供流程! 1. 从零创建并上传…

机器学习之基本概念 - 数据集、训练集、特征向量、独立同分布的

机器学习是对能通过经验自动改进的计算机算法的研究. ——汤姆米切尔(Tom Mitchell)[Mitchell, 1997] 思考一个问题: 如何让计算机能自动识别手写的数字? ————------------------———————分割线—————————————————-------…

部署HugeGraph

部署HugeGraph 这里以hugegraph1.2.0为例子,演示一下如何安装部署hugegraph 一、下载并安装JDK11 下载JDK11 https://www.oracle.com/java/technologies/downloads/#java11 使用scp命令将安装包上传到服务器 scp /path/to/local/file usernameserver_ip:/path/…

ue5 GAS 从零开始00

技能属性GAS 技能 属性 创建一个项目c 插件搜索 gameplay 保证这里勾选上 把这三个弄上去 “GameplayAbilities”,“GameplayTags”,“GameplayTasks” 这样就加载了三个模块 一定要先关ue 先关掉ue 生成 如果没编过,你就检查模块名字是不是没写对 一定要…