SQL 插入之前怎么判断数据库已经存在 10

要求从数据库A中将一张表全部插入另一数据库B中但是A数据库一段时间将会更新所以要多次从数据库A中的数据导入到B中所以怎么才能判断上一次导入的已经在数据可B中存在不用再次导... 要求从数据库A中 将一张表全部插入另一数据库B中 但是A数据库一段时间将会更新 所以要多次从数据库A中的数据导入到B中 所以怎么才能判断上一次导入的已经在数据可B中存在 不用再次导入呢 在两个数据库中 数据库A中的列名为C的要导入到数据库B中列名为D中 也就是说可以用数据库A中的列名C与数据库中的列名D来判断是不是数据库B中已经存在 求语句~~~
use A
insert into t_bd_item_info
(item_no,item_subno,item_name,item_subname,item_clsno,price,base_price,sale_price,main_supcust,other3,direct)
select
item_no,item_subno,item_name,item_subname,item_clsno,price,base_price,sale_price,main_supcust,other3,direct

from B.bi_t_item_info
如上 我想每次在插入之前 都判断下在B中的 item_no是否在A中已经存在同样的item_no 如果存在则掠过 如果不存在则插入~~~
展开
 我来答
abc8603
推荐于2018-05-11 · TA获得超过258个赞
知道小有建树答主
回答量:102
采纳率:100%
帮助的人:74万
展开全部
首先要说明的是,可以用一条语句实现你的要求,但是这条语句的使用效率非常低,如果数据量大,运行就非常的慢。具体语法如下:
insert into B_table
(f1,f2,f3...,D)
select F1,F2,F3,...C from A_table where C not in (select D from b_table);
此句实现的就是A中C列不在B中D列的数据都写入B中,但效率低。
如果可能,建议在A中增加一个标志位,标志是否已经写入过B,而且此标志位要做索引。
jamxval
2012-11-18 · TA获得超过6822个赞
知道大有可为答主
回答量:4308
采纳率:82%
帮助的人:1422万
展开全部
让两个数据库能直接建立分布式数据库并入同一个事务那就简单了,像 oracle 有 Database Link 能做到。DB2 也有类似的方式。

insert into B.Table2 (D)
select C
from A.Table1 a
left join B.Table2 b on a.C = b.D
where b.D is null
;
追问
这样的话 如果在数据库B中的数据我已经修改  如果再次执行的话 不都又从数据库B中更新过来了么?
追答
那你这个 B.item_no 还允许修改的?一般是不变的且唯一的作为 key 来判断才合适啊。会变的这个东西你怎么能判断它是本来就不存在还是复制过来之后被改了item_no 啊。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
good1234511
2012-11-18
知道答主
回答量:7
采纳率:0%
帮助的人:6354
展开全部
insert into B (name1,name2) values(select A.name1,A.name2 from A,B where A.id!=B.id)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-11-18
展开全部
同意楼上
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式