oracle和delete from,SQLserver Delete from where 与Oracle delete from where 的差异

1.SQLserver 版本:

select @@version;

Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)

Dec 28 2012 20:23:12

Copyright (c) Microsoft Corporation

Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1) (Hypervisor)

2.需求场景,生产系统中的数据为刷卡记录,存在重复的情况,现在需要删除重复的数据。

具体判别重复的方式为:同一卡号、同一消费金额、同一消费窗口、两条消费记录的时间差小于30秒则认为是重复的。样例数据如下:

2012210856 9.00 2016-03-02 11:47:05.000 消费 后勤集团\饮食中心\桂香园餐厅新\二楼\黑椒鸡柳饭 本专科生 7686

20122108569.002016-03-02 11:47:30.000消费后勤集团\饮食中心\桂香园餐厅新\二楼\黑椒鸡柳饭本专科生7687

20122108569.002016-03-02 11:47:48.000消费后勤集团\饮食中心\桂香园餐厅新\二楼\黑椒鸡柳饭本专科生7688

3.查询重复记录

select a.* from dbo.ODS_CCNU_zengx_distinct a inner join dbo.ODS_CCNU_zengx_distinct b

on a.smt_salaryno = b.smt_salaryno --同一卡号

and a.smt_transmoney=b.smt_transmoney --同一消费金额

and a.smt_org_name = b.smt_org_name --同一消费窗口

and datediff(ss,a.smt_dealdatetime,b.smt_dealdatetime)>=0

and datediff(ss,a.smt_dealdatetime,b.smt_dealdatetime)<30 --时间间隔为30秒之内

and a.rownum_distinct != b.rownum_distinct

order by a.smt_salaryno,a.smt_dealdatetime ;

或者这样

select a.* from [dbo].ODS_CCNU_zengx_distinct a

where exists( select 1 from [dbo].ODS_CCNU_zengx_distinct b

where a.smt_salaryno = b.smt_salaryno --同一卡号

and a.smt_transmoney=b.smt_transmoney --同一消费金额

and a.smt_org_name = b.smt_org_name --同一消费窗口

and datediff(ss,a.smt_dealdatetime,b.smt_dealdatetime)>=0

and datediff(ss,a.smt_dealdatetime,b.smt_dealdatetime)<30 --时间间隔为30秒之内

and a.rownum_distinct != b.rownum_distinct

)

order by a.smt_salaryno,a.smt_dealdatetime ;

删除重复记录,如果在oracle中可以这样写

delete from dbo.ODS_CCNU_zengx_distinct a

where exists( select 1 from dbo.ODS_CCNU_zengx_distinct b

where a.smt_salaryno = b.smt_salaryno --同一卡号

and a.smt_transmoney=b.smt_transmoney --同一消费金额

and a.smt_org_name = b.smt_org_name --同一消费窗口

and datediff(ss,a.smt_dealdatetime,b.smt_dealdatetime)>0

and datediff(ss,a.smt_dealdatetime,b.smt_dealdatetime)<30 --时间间隔为30秒之内

and a.rownum_distinct != b.rownum_distinct

);

但是SQLserver不支持这种写法,反而支持连接的方式(oracle不支持inner join 的方式)

delete a from dbo.ODS_CCNU_zengx_distinct a inner join dbo.ODS_CCNU_zengx_distinct b

on a.smt_salaryno = b.smt_salaryno --同一卡号

and a.smt_transmoney=b.smt_transmoney --同一消费金额

and a.smt_org_name = b.smt_org_name --同一消费窗口

and datediff(ss,a.smt_dealdatetime,b.smt_dealdatetime)>=0

and datediff(ss,a.smt_dealdatetime,b.smt_dealdatetime)<30 --时间间隔为30秒之内

and a.rownum_distinct != b.rownum_distinct;

Oracle delete input与delete all input

oracle官方文档提示:If you had specified DELETE INPUT rather than DELETE ALL INPUT, then RMAN would have on ...

Oracle delete和truncate实践操作之一

实践说明 本文章主要记录在Oracle中,delete和truncate进行数据删除之后,如何进行数据恢复.由于网上对delete和truncate的区别说明较多,此处不过多介绍两者区别. 注:由于环 ...

Sqlserver通过链接服务器访问Oracle的那些事儿

前言: 1.不经历风雨,怎能见彩虹. 2.充分利用BaiDu.google等搜索引擎查找资料并整合分析! 3.世上无难事只怕有心人! 本文由来:笔者在研究SQLSERVER链接服务器到oracle并使 ...

mysql没有delete操作,那是delete from操作,

1.mysql没有delete操作,那是delete from操作, 2.DELETE FROM table_name [WHERE Clause]

【转】Sqlserver通过链接服务器访问Oracle的那些事儿!

原文:http://blog.sina.com.cn/s/blog_614b6f210100t80r.html 前言:1.不经历风雨,怎能见彩虹.2.充分利用BaiDu.google等搜索引擎查找资料 ...

Sqlserver通过链接服务器访问Oracle的解决办法

转自http://blog.sina.com.cn/s/blog_614b6f210100t80r.html 一.创建sqlserver链接服务(sqlserver链接oracle)  首先sqlse ...

C&plus;&plus;中的new&sol;delete与operator new&sol;operator delete

new operator/delete operator就是new和delete操作符,而operator new/operator delete是函数. new operator(1)调用opera ...

C&plus;&plus; new和delete实现原理——new和delete最终调用malloc和free

new和delete最终调用malloc和free,关于malloc和free实现原理参见这篇文章: http://blog.csdn.net/passion_wu128/article/detail ...

随机推荐

一个不错的安卓下ssh客户端

1.使用安卓作为ssh客户端连接ssh服务器 软件名:JuiceSSH 版本   :1.4.8 大小   :4.22 M 百度网盘地址:JuiceSSH_1.4.8.apk  或 JuiceSSH_1 ...

可以开心的用Markdown了

1 计划 月计划 周计划 日计划 2 实现

PHP 中运用 elasticsearch

PHP扩展安装 1. 环境要求:PHP_VERSION >= 5.3.9,composer工具 2. 在E盘新建文件夹命名为elastic,,拷贝composer.phar到      E:/e ...

poj1887 Testing the CATCHER

Testing the CATCHER Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 13968   Accepted: 5 ...

nodejs 使用mongoose 操作mongodb

nodejs操作mongodb可以使用mongoose: Mongoose is a MongoDB object modeling tool designed to work in an async ...

Nim or not Nim&quest; hdu3032 SG值打表找规律

Nim or not Nim? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

ruby调用Office Jet引擎压缩access数据库

由于单位业务需要,搭建一台服务器专门用来做数据存储.因为数据流很小,遂采用access库作为DB.开始还好,但是后来发现access数据库有一问题,就是表空间会随着使用越来越大,哪怕表里没有数据.因为 ...

Ubuntu-1604-LTS在虚拟机设置分辨率

在虚拟机中安装ubuntu系统时,有时系统的界面并不同虚拟机展示的匹配,需要我们进行调整.不用那么多废话,直接看图:

JHipster生成微服务架构的应用栈(五)- 容器编排示例

本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈. 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值