删除表内innerNO对应的SerialNO值不是最大的所有数据

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:
 
  1. mysql> select * from t2; 
  2. +----+----------+---------+ 
  3. | id | SerialNO | InnerNo | 
  4. +----+----------+---------+ 
  5. |  1 |       19 |      10 |  
  6. |  2 |       16 |      10 |  
  7. |  3 |       99 |      10 |  
  8. |  4 |       17 |      10 |  
  9. |  5 |       53 |      11 |  
  10. |  6 |       67 |      11 |  
  11. |  7 |       89 |      12 |  
  12. +----+----------+---------+ 
  13. 7 rows in set (0.02 sec) 

需求:
这样的表,要删除innerNO对应的SerialNO值不是最大的所有数据。
例如innerNO=10,这个对应SerialNO值是19,16,99,17,只留这4条最大的SerialNO值,其他的都给删了。

 
  1. mysql> select a.*,b.* from t2 a left join t2 b on a.InnerNO=b.InnerNO where a.SerialNO < b.SerialNO group by a.SerialNO; 
  2. +----+----------+---------+------+----------+---------+ 
  3. | id | SerialNO | InnerNo | id   | SerialNO | InnerNo | 
  4. +----+----------+---------+------+----------+---------+ 
  5. |  2 |       16 |      10 |    1 |       19 |      10 |  
  6. |  4 |       17 |      10 |    1 |       19 |      10 |  
  7. |  1 |       19 |      10 |    3 |       99 |      10 |  
  8. |  5 |       53 |      11 |    6 |       67 |      11 |  
  9. +----+----------+---------+------+----------+---------+ 
  10. 4 rows in set (0.05 sec) 
 
  1. mysql> delete a from t2 a join t2 b on a.InnerNO=b.InnerNO where a.SerialNO < b.SerialNO ; 
  2. Query OK, 4 rows affected (0.20 sec) 
  3.  
  4. mysql> select * from t2; 
  5. +----+----------+---------+ 
  6. | id | SerialNO | InnerNo | 
  7. +----+----------+---------+ 
  8. |  3 |       99 |      10 |  
  9. |  6 |       67 |      11 |  
  10. |  7 |       89 |      12 |  
  11. +----+----------+---------+ 
  12. 3 rows in set (0.03 sec) 

 

 









本文转自hcymysql51CTO博客,原文链接:http://blog.51cto.com/hcymysql/1040888 ,如需转载请自行联系原作者


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
SQL 数据库
SQL INSERT INTO 语句详解:插入新记录、多行插入和自增字段
SQL INSERT INTO 语句用于在表中插入新记录。
315 0
|
关系型数据库 MySQL
|
关系型数据库 MySQL Java
给数据表添加或者删除列|学习笔记
快速学习给数据表添加或者删除列
111 0
|
SQL 安全 数据库
如何向表中插入数据以及如何更新、删除表中的数据
1. 插入 INSERT 用来将行插入到数据库表中。插入有几种方式: 插入完整的行。 插入行的一部分。 插入某些查询的结果。 INSERT 语法要求指定表名和插入到新表中的值。例如,我们将一个新顾客插入到 customers 表中。 插入前: INSERT INTO Customers VALUES('1000000006', 'Toy Land', '123 Any Street', 'New York', 'NY', '11111', 'USA', 'Jordan', 'Jordan@gmail.com'); 运行结果如下: 插入到新表中的值由 VALUES 子
131 0
DataTable 修改列名 删除列 调整列顺序
DataTable 修改列名 删除列 调整列顺序
183 0
在指定的列中插入数据
在指定的列中插入数据
46 0
插入、更新、删除表中的数据
插入、更新、删除表中的数据 笔记 (文中的姓名、电话等为随机编写的,如有冒犯,请多多包涵) >需求1 向科目表中添加数据,如表1 科目编号 科目名 课时数 年级编号 1 Logic Java 220 1 2 HTML 160 1 3 Java OOP 230 2 第一步,创建科目表subject,create table `subject`(.
1546 0
|
存储 数据库 索引
快速删除数据库中所有表中的数据
原文:快速删除数据库中所有表中的数据 select 'truncate table ' + Name + ';' from sysobjects where xtype='U' order by name asc; 该条语句执行之后会将数据库中所有的表都查询出来,复制出来之后执行truncate语句即可 sysobjects 在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。
1673 0
|
SQL
SQL|表中添加、删除或修改列。
ALTER TABLE 语句用于在已有的表中添加、删除或修改列。 ALTER TABLE 语法 如需在表中添加列,请使用下面的语法: ALTER TABLE table_name ADD column_name datatype 如需删除表中的列,...
959 0