文档章节

oracle表中删除重复项的问题

Lien_
 Lien_
发布于 2015/08/28 15:27
字数 384
阅读 21
收藏 0

(这段是原创的)

今天心血来潮,针对前几天韩哥说的一个会员只能创建一个商铺的问题整理一下tab_shop_info这张表,然后准备删掉会员id(cust_id)重复的项,而且只留下重复项里面id(shop_id)最小的项。

T_T 本来以为两三行写完的东西,真正写起来居然这么复杂------赶紧赶紧记下来!

第一步:查询重复项;

select cust_id from tab_shop_info group by cust_id  having count(cust_id) > 1

第二步:查询重复项里面shop_id最小的;

select min(shop_id) from tab_shop_info where cust_id in (

    select cust_id from tab_shop_info group by cust_id  having count(cust_id) > 1

)

第三步:统计所有重复项的shop_id;

select shop_id from tab_shop_info where cust_id in (

    select cust_id from tab_shop_info group by cust_id  having count(cust_id) > 1

)

第四步:排除掉shop_id最小的那个;

select shop_if from (

    select shop_id from tab_shop_info where cust_id in (

        select cust_id from tab_shop_info group by cust_id  having count(cust_id) > 1

    )

)where shop_id not in(

    select min(shop_id) from tab_shop_info where cust_id in (

        select cust_id from tab_shop_info group by cust_id  having count(cust_id) > 1

    )

)

第五步:删除

delete from tab_shop_info where shop_id in(

    select shop_if from (

        select shop_id from tab_shop_info where cust_id in (

            select cust_id from tab_shop_info group by cust_id  having count(cust_id) > 1

        )

    )where shop_id not in(

        select min(shop_id) from tab_shop_info where cust_id in (

            select cust_id from tab_shop_info group by cust_id  having count(cust_id) > 1

        )

    )

)

 

OK,这样才算完工了!

但是总觉得这么写好复杂啊,如果有谁写过简单一些的写法,麻烦在下面留言告知一下哈。1+1>=2,谢谢啦!

© 著作权归作者所有

Lien_
粉丝 0
博文 8
码字总数 503
作品 0
成都
程序员
私信 提问
查询并删除重复记录的SQL语句

查询及删除重复记录的SQL语句 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from peoplewhere peopleId in (select peopleId from people group by peop...

Oscarfff
2016/03/09
59
0
ORACLE查询并删除重复记录

查询及删除重复记录的SQL语句 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peo...

菠萝啊哈哈
2014/07/15
53
0
Navicat使用教程:如何删除MySQL中具有不同ID的重复行

下载Navicat Premium最新版本 Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL、Oracle及PostgreSQL数据库,让管理不同类型的数据库更加的方便。 大...

电池盒
01/31
27
0
Navicat使用教程:如何用非唯一键识别重复项

下载Navicat Premium最新版本 Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL、Oracle及PostgreSQL数据库,让管理不同类型的数据库更加的方便。 大...

电池盒
01/30
11
0
重装Oracle时出现environment variable "PATH"错误的解决办法

在win7 64位下重新安装oracle 11g,一直报environment variable "PATH"的错误,按说明将path里多余的路径删除,但没办法解决。选择忽略错误继续安装,装一半会报CRC错误,还是安装失败。最好...

良言
2018/07/21
77
0

没有更多内容

加载失败,请刷新页面

加载更多

Replugin借助“UI进程”来快速释放Dex

public static boolean preload(PluginInfo pi) { if (pi == null) { return false; } // 借助“UI进程”来快速释放Dex(见PluginFastInstallProviderProxy的说明) return PluginFastInsta......

Gemini-Lin
52分钟前
4
0
Hibernate 5 的模块/包(modules/artifacts)

Hibernate 的功能被拆分成一系列的模块/包(modules/artifacts),其目的是为了对依赖进行独立(模块化)。 模块名称 说明 hibernate-core 这个是 Hibernate 的主要(main (core))模块。定义...

honeymoose
今天
4
0
CSS--属性

一、溢出 当内容多,元素区域小的时候,就会产生溢出效果,默认是纵向溢出 横向溢出:在内容和容器之间再套一层容器,并且内部容器要比外部容器宽 属性:overflow/overflow-x/overflow-y 取值...

wytao1995
今天
4
0
精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
今天
7
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部