当前位置: 代码网 > it编程>数据库>MsSqlserver > SQL Delete使用示例详解

SQL Delete使用示例详解

2025年02月13日 MsSqlserver 我要评论
语法delete删除表中所需内容删除表中满足特点条件的行:delete from 表名 where 条件;删除表中所有行:delete from 表名;where子句where子句用于指定从表中选取记

语法

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  |
+----+------------------+

分析

编写解决方案 删除 所有重复的电子邮件,只保留一个具有最小 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
)

到此这篇关于sql delete使用的文章就介绍到这了,更多相关sql delete使用内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com