【发布时间】:2015-11-09 00:00:20
【问题描述】:
我有两张桌子
排名
列:category_id、country_id、item_name、rank、created_at、updated_at、change
Pk: (category_id,country_id,rank)
Ranking_History
id、category_id、country_id、item_name、rank、created_at、updated_at
PK: id
排名表包含当前排名,排名历史表包含过去的所有排名。排名每天更新,我无法弄清楚自上次排名以来排名变化的sql查询。 change 需要在排名表中更新。
我尝试过加入表格,但我只需要排名历史表中的一行,但在加入期间我无法限制。
【问题讨论】:
-
我不明白你的问题,更具体地说,
change是什么。考虑添加说明您的输入和所需输出的示例数据。 -
你的主键应该使用
item_name,而不是rank。 -
@GordonLinoff 为什么是 item_name? (rank, category_id, country_id) 也是唯一的,每个rank只有一项。
-
在此处考虑表架构调整。为什么要在不同的相关表中记录两次 ids、item_name 和 rank?对不同的项目和多个等级(一对多)进行规范化,并避免重复列。
-
@rajat 。 . .
ranking是随时间变化的计算。item_name作为表的主键似乎更为基础。
标签: sql postgresql