如何根据Postgres中的另一个表更新记录

时间:2018-01-25 17:53:17

标签: sql postgresql

我在Postgres有两张桌子

TableA
id, item_id, parent_id
1     i1        null
2     i2         1 -> match the id of the first record (1)
3     i3         2 -> match the id of the second record (2)

TableB
parent_id, item_id
  null           i1
   i1            i2         
   i2            i3

i1是最高级别,i2是第二级,i3是第三级。

我需要根据parent_id更新table A中的1列,以2table B

我有

Update TableA set parent_id = ? (SELECT id from TableA WHERE TableA.item_id = TableB.parent_id)
from TableB
where TableB.parent_id = TableA.item_id

以上基本上是我需要的,但我不确定这样做的确切systax。有人可以帮忙吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

你想要的我认为(你不太清楚)是这样的(未经测试):

Update TableA set parent_id = TableA_parent.id
from TableB
inner join TableA TableA_parent
  on TableB.parent_id = TableA_parent.item_id
where TableB.item_id = TableA.item_id