【问题标题】: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 匹配从一个表更新到另一个表 - stackoverflow.com/questions/224732/…
  • 您应该始终说明您正在使用什么数据库,并且也欢迎提供实际示例(尽管在这种情况下并不是真正必要的)。

标签: sql


【解决方案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 子句中进行连接,但不是全部。即使在那些这样做的人中,语法也各不相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-29
      • 2018-06-17
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      • 2012-04-07
      • 2011-10-25
      相关资源
      最近更新 更多