【从本人QQ空间迁移】Oracle中insertOrUpdate语句
在黑名单导入时,遇到第一次导入后,假如第二次导入重复数据,该如何解决。
首先想到的是,按照id,直接delete那条记录,重新insert
但是黑名单数据不止一条,后采用insertOrUpdate方案:
最先找到的是这样一条insertOrUpdate:
INSERT INTO table_name( 列名1, 列名2, ... )VALUES( value1,value2,... )
SELECT * FROM(SELECT ?列名1,? 列名2,? .... FROM DUAL)AS b ON DUPLICATE KEY
UPDATE 列名1=b.列名1, 列名2=b.列名2 , ...
But,以上方法在MySql中可以实现,经测试在oracle完全不行。
最后查到merge into 可以解决此类问题,不过需要oracle9.0以上(经询问项目正是10g版本)多次修改最终成功测试,oracle语句如下(为便于理解,格式已经改动):
MERGE INTO table_name L USING (SELECT * FROM DUAL) N
ON (L.列名5='1000000237')
UPDATE SET 列名X ='20130412'
INSERT ( 列名1 , 列名2, ... ) VALUES ( '1', ' 小张', ... )
小插曲:测试成功,但是项目却run到sql语句部分停止不动,后查明是由于事务未提交,表被锁住。
关于insertOrUpdate,在网上看到的一点(比较值得深思)的看法:
最直接的处理方法,就是先SELECT查询一次,看该条数据是否已经存在,如果已存在就UPDATE,如果不存在就INSERT。
这种处理的缺点是,不管怎样,都要先查询一次。
【从本人QQ空间迁移】Oracle中insertOrUpdate语句相关推荐
- 【从本人QQ空间迁移】重构“依恋情结”(以黑名单的新增编辑为例)
本次黑名单新增编辑方法也是使用上次说的form,关于form不再阐述. /*跳转至新增.修改页面*/ public ActionForward turnToEditBlack(ActionMappin ...
- Oracle编程入门经典 第6章 在Oracle中处理语句
6.1 SQL语句类别 DDL:数据定义语言语句.这样的语句有CREATE.TRUNCATE和ALTER,它们用于建立数据库中的结构,设置许可等.用户可以使用它们维护Oracle数据词典. D ...
- oracle大于条件,oracle中sql语句中的in的条件数量大于1000有问题
oracle中sql语句中的in的条件数量大于1000有问题 oracle中sql语句中select * from t_Test t where t.Id in(1,2,3......)/*数量不能 ...
- oracle12测试骤,Oracle中SQL语句解析的步骤
我们都知道在Oracle中每条SQL语句在执行之前都需要经过解析,这里面又分为软解析和硬解析.那么这两种解析有何不同之处呢?它们又分别是如何进行解析呢?Oracle内部解析的步骤又是如何进行的呢?下面 ...
- 查询oracle 表达小,oracle中sql语句小练习(使用连接查询)
假设A(m,n,p),B(m,n,p) --1.A表中有某一项m而B表中没有 使用左连接查询: select a.* from A a left join B b on a.m=b.m where b ...
- oracle中into字句,oracle中into语句
oracle 中select into是什么意思 这是一个复制表数据的操作. 创建aaa表,这里没有定义aaa表的字段以及类型,而是用select * from bbb,这就是把bbb里面所有的字段包 ...
- oracle中sql语句(+)符号代表连接
oracle中sql语句(+)符号代表连接 (+)在=前边为右连接 (+)在=后边为左连接 SELECT a.*, b.* from a(+) = b就是一个右连接,等同于select a.*, b. ...
- oracle sql连接符号,Oracle中sql语句(+)符号代表连接的使用讲解
oracle中sql语句(+)符号代表连接 (+)在=前边为右连接 (+)在=后边为左连接 SELECT a.*, b.* from a(+) = b就是一个右连接,等同于select a.*, b. ...
- oracle 整个表空间迁移,ORACLE表批量迁移表空间
第一步:将表迁移到目标表空间 1)使用如下语句,可以将需要移动的表空间语句在pl/sql中列出来, select 'alter table ' ||table_name || ' move table ...
最新文章
- python怎么随机生成数据_Python-随机生成数据
- 【计算机网络】网络层 : ICMP 协议 ( ICMP 差错报文 | 差错报文分类 | ICMP 询问报文 | ICMP 应用 | Ping | Traceroute )
- SQL SERVER 创建GHUID命令:select newid();
- Linux input子系统 io控制字段【转】
- 使用Eclipse连接SAP Netweaver系统遇到的错误消息和解决办法
- 【转载】数据库操作:添加、插入、更新语句
- 备战美赛,这些你应该知道的知识点
- gui jfr_Java飞行记录器(JFR)
- 16 --删除排序数组中的重复项
- 树莓派Raspberry Pi OS开机自启动脚本
- Sass函数:random()函数
- 河北外国语学院计算机宿舍,河北外国语学院宿舍怎么样 住宿条件好不好
- matlab 实现行程编码 对二值图像进行编解码
- linux查看内存和硬盘,Linux 查看内存,CPU及硬盘大小的步骤
- android自动化 模拟器,Android模拟器入门[转]
- 周鸿祎反流氓的基本商业逻辑(ZZ)
- 名帖89 蔡襄 楷书《荔枝谱》
- js完美转换阿拉伯数字为数字大写
- 计算机网络人工智能论文,浅析计算机网络中人工智能的应用论文
- 【Linux】SIGCHLD信号
热门文章
- 五个实体店营销方案,彻底打开你的思维,再也不用担心顾客不进店
- Joda-Time 计算两个时间差(年,月,星期,日,小时,分钟,秒,毫秒)
- [实践编] 直流电机的单片机控制与编码器信号处理
- C 语言http GET请求 超小纯净下载工具 (暂时只支持http,支持大文件下载)第三季
- 小心!异常断电对SSD的危害原来这么大
- 2012年敏捷个人俱乐部(北京)实践团开始报名了......
- 金州勇士队,硅谷黑科技打造的NBA奇迹!
- HTML5 表格元素
- 添加对System.ComponentModel.DataAnnotations.Schema;的引用
- 内网穿透---IPv6点对点【妈妈再也不用担心网速了】