用另一个表中的数据更新一个表[重复]

Posted

技术标签:

【中文标题】用另一个表中的数据更新一个表[重复]【英文标题】:Updating a table with data from another table [duplicate] 【发布时间】:2014-02-18 16:24:54 【问题描述】:

所以我有两列的 TABLE_ONE...ID 和 EXPIRE_DATE

除了 EXPIRE_DATE 之外,具有相同两列的 TABLE_TWO 具有虚拟值,需要从第一个表中填充。

我需要从 TABLE_ONE 中获取给定 ID 的最新 EXPIRE_DATE(不是最后添加的最新日期),并使用该 EXPIRE_DATE 填充 TABLE_TWO 中该 ID 的所有出现。

我想很明显 ID 不是任何一个表中的 PK。它会重复。

我将如何编写 TABLE_TWO 的此 UPDATE?

谢谢!

【问题讨论】:

SQL 根据 ID 匹配从一个表更新到另一个表 - ***.com/questions/224732/… 您应该始终说明您正在使用什么数据库,并且也欢迎提供实际示例(尽管在这种情况下并不是真正必要的)。 【参考方案1】:

类似这样的:

update table2
set expire_date = expdate
from table2 join 
(select id, max(expire_date) expdate
from table1
where whatever
group by id ) temp on table2.id = temp.id
where whatever

请注意,您的两个 where 子句应该相同。

【讨论】:

【参考方案2】:

您可以使用set 子句中的相关子查询来做到这一点:

update table_two
    set expire_date = (select max(t1.expire_date) from table_one t1 where t1.id = table_two.id);

这是标准 SQL 语法,应该适用于所有(或几乎所有数据库)。一些数据库允许在update 子句中进行连接,但不是全部。即使在那些这样做的人中,语法也各不相同。

【讨论】:

以上是关于用另一个表中的数据更新一个表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Mysql:用另一个表的选择最大值更新表[重复]

用另一个表中的值更新一个表

用另一个表中的值更新一个表

用另一个表中的最早日期更新表

用另一个表中的最新值更新

用另一个表中的随机条目更新表的列