sql - 使用映射表更改大量记录键

标签 sql oracle sql-update

我有一组由 id 号索引的记录,我需要将这些记录的索引转换为新的 id 号。我有一个两列表,将旧数字映射到新数字。

例如,给定这两个表,更新语句会是什么样的?

鉴于:

   OLD_TO_NEW
oldid   |   newid
-----------------
1234        0987
7698        5645
...         ...


id      |   data
----------------
1234        'yo'
7698        'hey'
...         ...

需要:
id      |   data
----------------
0987        'yo'
5645        'hey'
...         ...

这个 oracle 所以我可以访问 PL/SQL,我只是想避免它。

最佳答案

我会在 OLD_TO_NEW.oldid 上有一个唯一索引并更新内联 View :

update (select id,
               newid
          from old_to_new,
               my_table
         where my_table.id = old_to_new.oldid)
set id = newid

关于sql - 使用映射表更改大量记录键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1662383/

相关文章:

sql - 具有非平凡表结构的免费公共(public)数据库?

php - 在 DB2 Express C 中跨多个模式使用非限定 SQL

Oracle 的 Java 图形用户界面

MySQL将多个行条目复制到另一个位置

mysql - 是否可以在 UPDATE 的 WHERE 部分使用 Max()

php - 5.5.35-MariaDB 的 SQL 语法错误

sql - 为什么这个查询使用多个选择比使用 between 查询更快?

可变数量属性的数据库设计

sql - SELECT INTO变量,两条语句,添加变量

mysql - 更新/删除sql语句查询速度慢