PostgreSQL中多个表的最有效的UPDATE过程

时间:2015-07-23 10:29:00

标签: sql postgresql

示例/案例:

  • Table_1:所有士兵[fullname, date of birth, ...]
  • Table_2:所有可能的海军排名[Seaman, ..., Fleet Admiral]

任务:更新士兵(Pedro A,...,Alberto Z)从(当前等级)指挥官到(新等级)船长

执行此操作的最有效方法是什么?

1 个答案:

答案 0 :(得分:1)

使用更多具有敏感性的表格名称:soldiers代替Table_1ranks代替Table_2

具有排名的表应该具有每个排名的id。将其命名为rank_id Seaman 1 Fleet Admiral 100 rank_id PostgreSQL对于此类键列具有SERIAL类型,其类型应为rank_id

soldiers表格中,将rank_id列添加到ranks表中的记录。

然后你可以提升士兵:

UPDATE soldiers SET rank_id=(SELECT rank_id FROM ranks WHERE rank_name='Commander') WHERE rank_id=(SELECT rank_id FROM ranks WHERE rank_name='Captain')