sql - 如何使用另一个表中记录按 id 匹配的值更新表中的所有记录?

标签 sql oracle batch-updates

假设我有两个表:

USER
+------+------+-------------------+
|   ID | NAME | CREATED_TIMESTAMP |
+------+------+-------------------+
|    1 |   N1 |              Null |
+------+------+-------------------+
|    2 |   N2 |              Null | <--------- acceptor of reference-value
+------+------+-------------------+           \
|  ... |  ... |               ... |            \
+------+------+-------------------+             \
                                                 \ 
REFERENCE_CREATED_TIMESTAMPS                      \
+-------------+----+-------------------+            these records match
|  TABLE_NAME | ID |CREATED_TIMESTAMP  |          /
+-------------+----+-------------------+         /
|        USER |  1 | 12.03.12 17:20:40 |        /
+-------------+----+-------------------+       /
|        USER |  2 | 14.03.12 10:12:54 |  <--- reference-value
+-------------+----+-------------------+
|   FOO_TABLE |  1 | 17.05.12 08:10:01 |
+-------------+----+-------------------+
|         ... | ...|               ... |
+-------------+----+-------------------+

现在我想使用 REFERENCE_CREATED_TIMESTAMPS 表中的值填充 USER 表中的 CREATE_TIMESTAMP 列,即对于 ID=2 的用户,我将使用来自 CREATED_TIMESTAMP 的值REFERENCE_CREATED_TIMESTAMPS 行,其中 TABLE_NAME=USERID=2

对 USER 表的所有记录执行此操作的查询是什么?

最佳答案

尝试这样..

Update UserTable Set CREATED_TIMESTAMP=
(Select Min(CREATED_TIMESTAMP) from REFERENCE_CREATED_TIMESTAMPS where
 REFERENCE_CREATED_TIMESTAMPS.Id=UserTable.Id and Table_Name='User')

关于sql - 如何使用另一个表中记录按 id 匹配的值更新表中的所有记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17152480/

相关文章:

oracle - Oracle 批量更新速度慢

mysql - mysql中CREATE TABLE语句中KEY的含义

sql - 如何在 SQL 2008 R2 的表中创建 AutoCounter 列?

SQL Server 按顺序分组

java - 带有重复键更新的 MySQL Batchupdate()

REDIS/jedis 更新排序集中所有成员的分数

mysql - 如果第二个表中没有记录,则选择总和为零?

oracle - 如何授予 "grant create session"权限?

java - Oracle 中的 NLS_CHARACTERSET WE8ISO8859P1 和 UTF8 问题

sql - 使用随机值作为连接条件