当前位置:   article > 正文

数据库:delete语句

delete语句

一、DELETE语法

1、删除整个表

delete from 表名;      

 2、删除满足筛选条件的行

  1. delete 别名 from 表名 as 别名 where 筛选条件;
  2. #尽量把条件包在where子句中

二、LEECODE196.删除重复的电子邮箱——使用delete

编写一个SQL查询来 删除 所有重复的电子邮件,只保留一个id最小的唯一电子邮件。

查询结果格式如下所示。

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/delete-duplicate-emails
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 

方法一:

找出每个email的最小id,将其他删除即可

  1. delete from person where id not in(
  2. select min(id) as id from person group by email);

注意:上面 代码会报错"You can't specify target table 'person' for update in FROM clause",因为MYSQL不允许同一张表一边查自己一边更新自己,可以使用select子句进行包装

  1. delete from person where id not in(
  2. select id from(
  3. select min(id) as id
  4. from person
  5. group by email) as a);

方法二:

1、先对两个person表内连接,别名分别为a,b

连接条件为  a.id < b.id AND a.email = b.email     连接结果如下

 2、根据题目要求,a表删除这条数据删除即可。代码为

  1. delete a from person as a, person as b
  2. where a.id > b.id and a.email = b.email

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/409464?site
推荐阅读
相关标签
  

闽ICP备14008679号