我有两张桌子
列:category_id,country_id,item_name,rank,created_at,updated_at,change
Pk :( category_id,country_id,rank)
id,category_id,country_id,item_name,rank,created_at,updated_at
Pk:id
排名表包含当前排名,排名历史表包含过去的所有排名。排名每天更新,我无法找出sql查询,以找到自上次排名以来的排名变化。 change
需要在排名表中更新。
我已尝试加入表格,但我只需要排名历史记录表中的一行,但在加入期间我无法限制。
答案 0 :(得分:0)
一种方法是使用日期函数。像这样:
update ranking r
set change = (r.rank = rh.rank)
from ranking_history rh
where r.category_id = rh.cateogry_id and
r.country_id = rh.country_id and
r.item_name = rh.item_name and
date_trunc('day', r.created_at) = date_trunc('day', rh.created_at + interval '1 day');