首先我的数剧是这样的:

  

  我想根据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. textarea兼容问题

    一.IOS 中不允许输入 <textarea contenteditable="true"></textarea> textarea { -webkit-u ...

  2. Day17-JavaSE总结

    不多说了,直接去看视频吧! 链接 完结撒花!!!

  3. element NavMenu侧栏导航菜单(可折叠)

    展示效果如图: 代码: <el-scrollbar class="scrollbar-wrapper"> <!-- el-scrollbar超长可滚动 --> ...

  4. 微信小程序开发遇到的注意事项及奇怪事

    1.wx.uploadFile上传文件时只支持本地文件(相册或者拍摄的),网络文件不可以,可以将网络文件用wx.downloadFile下载到本地在下载,下载以后会返回一个微信临时地址然后再下载 2. ...

  5. mitudesk的pytorch基础

    pytorch定义张量的方法和Numpy差不多 2. 标量才能对张量求导,代表其在各个方向上的偏导数,结果是一个张量 3. 在pyt中张量可以对张量求导,前提条件是求导时传一个1,1,1,1,进去,其 ...

  6. 12.6linux学习第十三天

    今天老刘开始讲第9第章使用ssh服务管理远程主机.第10章开了个小头. 9.1 配置网卡服务 9.1.1 配置网卡参数 截至目前,大家已经完全可以利用当前所学的知识来管理Linux系统了.当然,大家的 ...

  7. centos7 系统运行中做raid磁盘阵列

    插入磁盘 lsblk查看磁盘总体情况 对sdb1等需要做的硬盘进行制作 fdisk /dev/sdb 开始 n 创建 p 给资源回车 重选代码 t 确认磁盘阵列代码 fd 保存w 首先安装工具 mda ...

  8. hdu: You Are the One(区间DP)

    Problem Description The TV shows such as You Are the One has been very popular. In order to meet the ...

  9. 12、jmeter逻辑控制器-临界区控制器

    临界区:说白了就是不并发了 一个个的像独木桥 使用场景:比如提交一个数据  需要一个一个的提交  一个个的改   在数据库改操作的时候 需要用到 临界区控制器 案例:临界区控制器

  10. 拉勾java核心类库--String类

    String类 @author :magiclx 摘要:String类是用final进行修饰的,关于字符串的一个类,其中包含很多个方法 关键词:String,常量池,正则表达式,数组转化 正文: 参考 ...