0

我有 2 个具有相同表的数据库:具有列 name_code 和 name的mytable

架构1@databse1

名称代码 | 姓名
pf0tt.....|事实
gf09to3...|事实1
it031.....|papp
pf0tt.....|fattt
gf09to3...|fappt1
iy031.....|foot2
pf0tt.....|oooct
gf09to3...|oct1
ru031.....|uuut2
pf0at.....|tttt
kk0eto3...|事实1
ll011.....|事实2

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


我将详细解释我的问题

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

4

1 回答 1

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

更新要插入 schema1.mytable 中尚不存在于 schema2.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如果您想一次性尝试(有条件地插入、更新、删除),您也可以查看语句。

于 2013-06-21T07:36:15.950 回答