表A:
id - primary key
order_date - timestamp
last_updated - timestamp
company_id - company table's primary key
表B:
id - primary key
company_id - company table's primary key
last_updated - timestamp
creation_date - timestamp
我尝试将表A的last_updated列更新为表B的last_updated列中的值。两个表都在PK列以外的所有列中都有重复的内容。
这是我的思考过程,但我无法正确使用SQL:
对于表A中的每一行,我需要在表B上找到匹配的company_id
假设从表B中找到了25个针对该company_id的结果。在这25个结果中,我需要在表B中找到具有MAX creation_date的行,该行在表A' order_date之前。
这会将结果降低一个。此行的last_update值将复制到表A的last_updated列。
答案 0 :(得分:2)
这可能非常昂贵,但您可以使用相关子查询来处理此问题:
update a
set last_updated = (select b.last_update
from b
where a.company = b.company and
b.creation_date < a.order_date
order by creation_date desc
limit 1
);
为了提高性能,您需要b(company, creation_date, last_update)
上的索引。