首先我的数剧是这样的:

  

  我想根据name1、relation和name2判断如果重复的话删除重复的数据且保留id最小的一条数据,于是写了下面的sql语句

  

DELETE
FROM star_relation
WHERE (name1,relation,name2)IN
(SELECT
name1,
relation,
name2
FROM star_relation
GROUP BY name1,relation,name2
HAVING COUNT( * ) > 1)
AND id NOT IN
(SELECT
MIN(id) AS id
FROM star_relation
GROUP BY name1,relation,name2
HAVING COUNT( * ) > 1)

结果报了以下错误:[Err] 1093 - You can't specify target table 'star_relation' for update in FROM clause

查找资料得知:大概是因为不能直接在查询的语句中进行操作。所以解决办法就是:将查询包装一层,于是有了下面的代码:(亲测有效)

DELETE
FROM star_relation
WHERE (name1,relation,name2)IN(SELECT
name1,
relation,
name2
FROM (SELECT
name1,
relation,
name2
FROM star_relation
GROUP BY name1,relation,name2
HAVING COUNT( * ) > 1) a)
AND id NOT IN (SELECT id FROM
(SELECT
MIN(id) AS id
FROM star_relation
GROUP BY name1,relation,name2
HAVING COUNT( * ) > 1)b)

mysql根据多列去除重复数据bing 并保留id最小的一项的更多相关文章

  1. 【Mysql】根据时间去除重复数据

    SELECT a.project_id,a.user_id,a.app_version,a.src_system,a.channel,a.thedate FROM rpt_innoreport_luc ...

  2. Linq把一个DataTable根据一列去除重复数据

    DataTable dt_temp = dt.AsEnumerable().Cast<DataRow>().GroupBy(p => p.Field<string>(&q ...

  3. mysql删除表中重复数据,只保留一个最小的id的记录

    语句: delete from table1 where id not in (select minid from (select min(id) as minid from table1 group ...

  4. MySQL 查询重复数据,删除重复数据保留id最小的一条作为唯一数据

    开发背景: 最近在做一个批量数据导入到MySQL数据库的功能,从批量导入就可以知道,这样的数据在插入数据库之前是不会进行重复判断的,因此只有在全部数据导入进去以后在执行一条语句进行删除,保证数据唯一性 ...

  5. sql 多个字段分组,删除重复记录,保留ID最小的一条

    IF OBJECT_ID('cardDetail') IS NOT NULL DROP TABLE cardDetail CREATE TABLE cardDetail ( id ,) PRIMARY ...

  6. oracle 相关查询和非相关查询,oracle 去除重复数据,以及oracle的分页查询!

    一.oracle中的相关查询?和非相关查询? 二.oracle去除重复数据 1. 2. 3.oracle 实现分页? 利用rownum的唯一性,和子查询,将rownum从伪列变成实际列!

  7. oracle_删除同一列的重复数据

    <!--删除同一列的重复数据 rowid 在orcle中 数据的物理地址---> delete from tbl_over_picture_alarm a where rowid not ...

  8. C# List集合去除重复数据

    实例如下: using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; ...

  9. SQL中删除重复的行(重复数据),只保留一行 转

    方法一:使用在T-SQL的编程中 分配一个列号码,以COL1,COL2组合来分区排序,删除DATABASE重复的行(重复数据),只保留一行 // COL1,COL2是数据库DATABASE的栏位 de ...

  10. 你真的会玩SQL吗?删除重复数据且只保留一条

    在网上看过一些解决方法 我在此给出的方法适用于无唯一ID的情形 表:TB_MACVideoAndPicture 字段只有2个:mac,content mac作为ID,正常情况下mac数据是唯一的,由于 ...

随机推荐

  1. 基于Python接口自动化测试持续集成----在jenkins创建任务->检出git的代码-->生成报告-->发送邮件

    步骤一:先在jenkins创建一个自由风格的任务 步骤二:然后在源码管理选择git检出代码的方式,需要提供代码所在git的路径和登录git的账号和密码 步骤三:返回到任务配置的界面,先在构建后操作增加 ...

  2. 211808543 钟志凌 https://home.cnblogs.com/u/211808543zhongzhiling/ https://github.com/wayne9

    211808543  钟志凌     https://home.cnblogs.com/u/211808543zhongzhiling/   https://github.com/wayne9

  3. java中数组操作,正序,逆序,子数组、自定义排序

    // 数组定义,初始化 int[] array = new int[]{1, 2, 2, 1}; int[] dest = new int[10]; Integer[] soul = new Inte ...

  4. Vue-数据代理

    Vue中的数据代理 数据代理定义 所谓数据代理,就是通过一个对象代理对另一个对象中的属性的操作(读/写).说白了就是操作一个对象上的属性可以读取和修改另一个对象上的属性,这种关系就叫做数据代理. 在V ...

  5. AutoCAD_2020_Simplified_Chinese_Win_64bit_dlm

    「AutoCAD_2020_Simplified_Chinese_Win_64bit_dlm」https://www.aliyundrive.com/s/zN8zAGgXZ58 点击链接保存,或者复制 ...

  6. CentOS 8.x系统安装配置图解教程

    说明:截止目前CentOS-8.x最新版本为CentOS-8.4.2105,下面介绍CentOS-8.4.2105的具体安装配置过程 服务器相关设置如下: 操作系统:CentOS-8.4.2105 I ...

  7. 学习 vue框架

    new watch 监听值的变化     watch: {             "input1": {                 handler(newName, old ...

  8. 小梅哥课程学习——串口发送应用之发送数据(适用于板级验证,时间间隔位100ms)

    //此代码的注意事项,首先这个代码不能仿真成功会出现一定的时间延迟, //因为在做板级验证的时候把时间改成了100ms发送一次,要想仿真成功,把时间改成499999 //使用上一节课设计的发送模块,设 ...

  9. [C++] Linux TCP Socket 实例- 阻塞

    Linux平台 TCP Socket通信实例,发现用代码注释记笔记也不错 TCP server 阻塞 1 // 两个进程通过socket进行通信,client需要知道server的,server却不需 ...

  10. Mxgraph

    1. Hello World! Creating an HTML page that links the mxGraph client JavaScript, Creating a container ...