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

Oracle 使用不同的数据库更新2个表中的特定列,oracle,Oracle,我有两个数据库具有相同的表:mytable具有列名\u代码和名称 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...|fact

我有两个数据库具有相同的表:mytable
具有列名\u代码和名称

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 名称|代码|名称 pf0tt….事实 gf09to3…|事实1 it031…| papp pf0tt…| fattt gf09to3…| fappt1 iy031….英尺2 pf0tt….oooct gf09to3…| ooct1 ru031…| uUt2 pf0at…| tttt kk0eto3…|事实1 ll011…|事实2 我的问题是我有一个有500多条记录的表(这是一个例子),我想在这个表中选择特定的名称,将它们插入到另一个数据库的另一个表中(
schema2@databse2
)。如何在查询中做到这一点?我可以通过
select(updatemytable set name\u code=…


我会详细解释我的问题


我有大约300个名称代码如何将它们插入到(,)中?可能我会有1000个名称代码和(,)中的函数,您只能插入500条记录。上表中的名称代码如何放入(,)中?

您在寻找类似的内容吗

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中分配了适当的权限,以便能够插入记录

更新要插入schema1.mytable中尚未存在于schema2.mytable中的所有对(名称、代码、名称),可以使用如下查询

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
)
这里是演示

调整条件以达到你的目的


如果您想一次完成(有条件地插入、更新、删除),您还可以查看语句。

'insert'或'update'?在SQL server中,您只需从database.schema.table'@NLwino INSERTS执行',以及如何指定200条记录?'A'、'B'、'C'…?)我们都知道你有一长串的名字,但这一事实本身并不能帮助我们帮助你。为了得到帮助,你需要解释哪些规则可以适用于你需要的那些名字(例如,所有以“事实”开头的名字,以及所有以“2”结尾的名字等)@peterm没有规则,没有什么是特定的,我正在尽力解释我的问题。我有一个带有随机名称代码(fb13,ity2,aklo0)的表,在真实情况下它们大约是300-400。这些名称代码有一个名为name的列(peterm,Moudiz,ben)…我的另一个数据库(不是模式)中的问题name_代码存在,但某些name列丢失或错误,因此我想用错误的名称更新丢失的和错误的名称。如果我有大量记录,我该怎么做?现在更清楚了,对吗?更清楚一点。插入目标表中不存在的记录相当容易。有关示例,请参阅更新的答案。但要修复,请参阅(更新)错误记录(如您所述)您需要定义这到底意味着什么。perterm我这里的问题是我有大约300个名称代码如何将它们插入到(,)中?可能我会有1000个名称代码,并且在(,)中支持指定编号您可以在(
中以逗号分隔)逐个指定它们
或者您可以使用模式匹配
LIKE
REGEXP\u LIKE
来定位名称集(例如,所有以“事实”开头的名称和所有以“ooo”开头的名称等)