使用不同的数据库更新2表中的特定列

时间:2013-06-21 06:58:01

标签: oracle

我有两张带有相同表格的DATABSE: mytable
,列名为name_code,名称为

schema1 @ databse1

name_code | name
pf0tt.....|fact
gf09to3...|fact1
it031.....|papp
pf0tt.....|fattt
gf09to3...|fappt1
iy031.....|foot2
pf0tt.....|oooct
gf09to3...|ooct1
ru031.....|uuut2
pf0at.....|tttt
kk0eto3...|fact1
ll011.....|fact2

我的问题是我有一个有500多条记录的表(这个是一个例子)我想要的是在这个表中选择特定名称将它们插入另一个数据库的另一个表中(schema2@databse2 )。如何在查询中执行此操作?我可以通过select (update mytable set name_code = ..

来做到这一点

我会详细解释我的问题

我有大约300个name_code如何在(,)中插入它们?并且我可以在(,)中拥有1000个name_code和函数,你只能插入500条记录。如何将上表中的name_code放入in(,)?

1 个答案:

答案 0 :(得分:1)

你在找这样的东西吗?

INSERT INTO schema2.mytable
SELECT * 
  FROM mytable
 WHERE name IN ('fact', 'fact1', ...)
       -- you can apply other conditions to narrow or broaden the results 
       -- of filtering source rows

假设您从schema1

执行此查询

确保您在schema2中分配了适当的权限才能插入记录。

UPDATE 要插入schema2.mytable中尚不存在的schema1.mytable中的所有对(name_code,name),您可以使用这样的查询

INSERT INTO schema2.mytable (name_code, name)
SELECT name_code, name
  FROM mytable1 t
 WHERE NOT EXISTS
(
  SELECT 1 
    FROM schema2.mytable 
   WHERE name_code = t.name_code
     AND name = t.name
)

这是 SQLFiddle 演示

调整条件以达到您的目的

如果您想一次性尝试(有条件地插入,更新,删除),您还可以查看 MERGE 语句。