用另一个表中的数据更新一个表[重复]
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
子句中进行连接,但不是全部。即使在那些这样做的人中,语法也各不相同。
【讨论】:
以上是关于用另一个表中的数据更新一个表[重复]的主要内容,如果未能解决你的问题,请参考以下文章