【SQL】Delete使用

目录

语法

需求

示例

分析

代码


语法

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
)
相关推荐
NineData5 小时前
NineData 与统信服务器操作系统完成兼容认证
数据库·oracle·操作系统·软件·数据库管理工具·ninedata·统信
Rain的Java大神之路14 小时前
如何快速上传10G文件
java·spring boot·redis·后端·mysql·spring cloud·面试
十二同学啊14 小时前
向量数据库:从核心原理到 RAG 与 Java 实战
数据库
蓝速科技15 小时前
会议室门牌公告通知发布选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
大海星辰79816 小时前
一次对账SQL“灵异事件”排查:NOT IN返回空集的坑
mysql
Linux-lucky16 小时前
32-38-Linux学习之旅之MySQL综合
linux·运维·学习·mysql·ubuntu
一 乐18 小时前
二手交易平台|基于springboot + vue二手交易平台(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序
SelectDB18 小时前
同等资源下 Apache Doris 4.2 vs StarRocks 4.1.1:1TB SSB 与 TPC-H 性能实测
大数据·数据库·数据分析
这个DBA有点耶18 小时前
数据库集群与分布式架构:三条技术路线对比、金仓KES RAC实测数据与决策框架
数据库·程序员·架构
MayBaymax18 小时前
MongoDB 索引与事务
java·数据库·mongodb