12
返回列表 发新帖
楼主: No_Pain_No_Gain

[SQL] inser where的实现方式?

[复制链接]
论坛徽章:
3
ITPUB15周年纪念
日期:2016-10-13 13:15:34秀才
日期:2017-03-20 13:42:20秀才
日期:2017-03-28 15:59:38
11#
发表于 2017-1-24 16:12 | 只看该作者
No_Pain_No_Gain 发表于 2017-1-24 15:36
感觉有些多此一举了。 就直接insert,还省去增加表作merge运算处理。表上加了主键,不加就重复了,违反主 ...

那就用OO斑竹的方法吧

使用道具 举报

回复
论坛徽章:
0
12#
 楼主| 发表于 2017-1-24 16:19 | 只看该作者
ed2000up 发表于 2017-1-24 13:48
其中一個表用 DUAL

INSERT INTO clients
(client_id, client_name, client_type)
SELECT 10345, 'IBM', 'advertising'
FROM dual
WHERE not exists (select * from clients
where clients.client_id = 10345);

使用道具 举报

回复
论坛徽章:
169
SQL数据库编程大师
日期:2016-01-13 10:30:43SQL极客
日期:2013-12-09 14:13:35SQL大赛参与纪念
日期:2013-12-06 14:03:45最佳人气徽章
日期:2015-03-19 09:44:03现任管理团队成员
日期:2015-08-26 02:10:00秀才
日期:2015-07-28 09:12:12举人
日期:2015-07-13 15:30:15进士
日期:2015-07-28 09:12:58探花
日期:2015-07-28 09:12:58榜眼
日期:2015-08-18 09:48:03
13#
发表于 2017-1-24 19:40 | 只看该作者
一个insert不用搞这么纠结吧。。。

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
14#
发表于 2017-1-24 22:22 | 只看该作者
No_Pain_No_Gain 发表于 2017-1-24 16:19
INSERT INTO clients
(client_id, client_name, client_type)
SELECT 10345, 'IBM', 'advertising'
...

在MERGE中用DUAL想必你也知道了吧?

11g还有个 IGNORE_ROW_ON_DUPKEY_INDEX提示可以用。

另外,不知道你的数据是哪里来的,如果是从另外一个查询查出来的,那么就不要一行一行插入,而应该用 INSERT ... SELECT

使用道具 举报

回复
论坛徽章:
0
15#
 楼主| 发表于 2017-2-9 11:33 | 只看该作者
newkid 发表于 2017-1-24 22:22
在MERGE中用DUAL想必你也知道了吧?

11g还有个 IGNORE_ROW_ON_DUPKEY_INDEX提示可以用。

不是单独在数据库中,是在脚本中,数据来自a.txt之类的文本文件,是将文本文件中的内容放到数据库中

使用道具 举报

回复
论坛徽章:
0
16#
 楼主| 发表于 2017-2-9 14:01 | 只看该作者
newkid 发表于 2017-1-24 22:22
在MERGE中用DUAL想必你也知道了吧?

11g还有个 IGNORE_ROW_ON_DUPKEY_INDEX提示可以用。

INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(TMP_0209, tmp_0209_pk) */ INTO tmp_0209(ID) VALUES(2);

试了下,这个hint不错。跟OO登记error的方式类似,忽略错误不处理,这个更方便简单。

谢谢newkid的多次指导,谢谢!长姿势了

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表