正好想写一条删除重复语句并保留一条数据的SQL,网上查了一部分资料写的很详细,但还是在这里写下自己的理解,以遍后续学习 。如下:

表字段和数据:

SQL语句:

DELETE FROM`user`WHEREidNOT IN(SELECT*FROM(SELECTidFROM`user`GROUP BYusername)ASb)

理解:

先从里面的SQL开始看

1、SELECT id FROM `user` GROUP BY username根据名字分组查询出每组的ID。

2、SELECT * FROM(SELECT id FROM `user` GROUP BY username) AS b  这句话中有2个疑问点,

第一、为什么要套这样一个select?因为 更新数据时使用了查询,而查询的数据又做更新的条件,mysql不支持这种方式

如果不套上这个select查询,那么将会报1093 -  You can't specify target table 'user' for update in FROM clause错误。

第二、这句话中一定要取别名,不然会报1248 - Every derived table must have its own alias 错误

3、结合上面的分析来看一下整个的SQL语句理解,先将分组的ID查出来,然后删除USER表中ID 不在分组ID中的数据,那么就实现效果了。

delete from 表名 where  ID not in (select * from (select  id from 表名 group by 分组的列名)   别名)

效果如下:

转自:http://blog.csdn.net/dsiori/article/details/52806709

mysql用一条sql语句删除重复记录_mysql中删除重复记录,并保留重复数据中的一条数据的SQL语句...相关推荐

  1. mysql怎样删除上一行_mysql如何删除第一行数据

    我就废话不多说了,大家还是直接看代码吧~create or replace function aa1(a1 integer[],a2 bigint) returns void AS $$declare ...

  2. mysql删除表崩溃_MySQL在删除表时I/O错误原因分析

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 问题现象 最近使用sysbench测试MySQL,由于测试时间较长,写了一个脚本按prepare->run->cleanup的顺 ...

  3. go语言mysql删除记录_MySQL数据库删除操作-Go语言中文社区

    删除数据库 DROP DATABASE [IF EXISTS] 数据库名; 例如:删除school数据库 IF EXISTS 为可选,判断是否存在,如果不存在则会抛出异常 删除数据表 DROP TAB ...

  4. mysql删除主键_mysql如何删除主键?

    当一个表中设置了主键之后,如果想要删除主键了要怎么做?下面本篇文章就给大家介绍MySQL删除主键的方法,希望对你们有所帮助. 首先我们来看看删除主键的语法:ALTER TABLE TABLE_NAME ...

  5. mysql利用级联删除和更新_MySql级联删除和更新

    (一)利用外键实现级联删除 1.先建立测试数据库 CREATE TABLE `roottb` ( `id` INT(11) UNSIGNED AUTO_INCREMENT NOT NULL, `dat ...

  6. mysql查询结果某个字段设置为固定值_MySQL使用select查询时,在查询结果中增加一个字段并指定固定值...

    假设需求是这样的: mysql> desc user; +-------+----------+------+-----+---------+----------------+ | Field ...

  7. mysql批量删除多条记录的sql语句_mysql批量删除sql语句

    30种mysql优化sql语句查询的方法_计算机软件及应用_IT/计算机_专业资... 简要介绍基础语句: 1.说明:创建数据库 CREATE DATABASE database-name 2.说明: ...

  8. mysql语句中怎么去重复_mysql中删除重复记录sql语句

    在sql中我们经常会碰到有重复的一些数据,下面我来介绍在mysql中删除重复记录的多种方法,有需要的朋友可参考参考. 删除重复记录方法一: 1. 新建一个临时表 代码如下 复制代码 create ta ...

  9. 用一条sql语句删除表中所相同记录

    用一条sql语句删除表中所相同记录如下一.具有主键的情况 a.具有唯一性的字段id(为唯一主键) delete table where id not in ( select max(id) from ...

  10. mysql批量删除数据sql语句_mysql批量删除数据sql语句详解

    1.like与 in批量删除指定记录 like语法 like主要是用来模糊查询了 sql = "delete from A where field like '%ABC%'" 这个 ...

最新文章

  1. 我离开Uber,开始自主创业后......
  2. 2019全球高引学者榜单出炉:中国735人次入选增速第一,计算机学科蝉联第一,中科院首次入围全球前三...
  3. Android 应用 之路 MPAndroidChart~ScatterChart
  4. window版docker安装及配置
  5. C++ Primer 7.33 练习编写成员函数
  6. android版 eclipse
  7. python split 引号_Python 学习笔记 - 字符串
  8. 【Maven篇】---解决Maven线上部署java.lang.ClassNotFoundException和no main manifest attribute解决方法...
  9. 八大排序算法的python实现(七)基数排序
  10. 将bat文件转化成exe
  11. App测试流程及测试点
  12. ARM920T的MMU与Cache ——转载
  13. WebView 入坑
  14. 使用k-means及k-prototype对混合型数据集进行聚类分析
  15. 顶级赛事|2021 CCF大数据与计算智能大赛重磅来袭!
  16. 一次CSDN客户体验经历
  17. 编译 LineageOS 源码,并重定义 kernel log
  18. WORD页码相同问题
  19. oracle maxidletime,ORA-02396:超过最大空闲时间,请再次连接
  20. 高压电工作业考试试题

热门文章

  1. python list中的append 与 extended 的区别
  2. 安卓学习笔记35:广播接收者
  3. 安卓案例:利用帧动画动态显示时间
  4. 【codevs1368】【BZOJ1034】泡泡堂BNB,贪心思路
  5. android三星note20.6,再次力压华为Mate20 Pro, 三星Note9评选为2018年最佳安
  6. integer 转int类型 java_Java数据类型中String、Integer、int相互间的转换
  7. 阿里云负载均衡器(SLB)的配置方法
  8. VS系列IDE(2005、2008等)下使用cppunit的方法及使用示例
  9. UE4 调整引擎功能的级别
  10. 现代 CMake 简明教程(一)- CMake 基础