示例/案例:
Table_1
:所有士兵[fullname, date of birth, ...]
Table_2
:所有可能的海军排名[Seaman, ..., Fleet Admiral]
任务:更新士兵(Pedro A,...,Alberto Z)从(当前等级)指挥官到(新等级)船长
执行此操作的最有效方法是什么?
答案 0 :(得分:1)
使用更多具有敏感性的表格名称:soldiers
代替Table_1
和ranks
代替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')