Sql 如何在Postgres中根据另一个表更新记录
我在博士后有两张桌子Sql 如何在Postgres中根据另一个表更新记录,sql,postgresql,Sql,Postgresql,我在博士后有两张桌子 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
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是第三层
我需要根据表B将表A中的parent_id列更新为1和2
我有
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是否能做到这一点。有人能帮忙吗
非常感谢 我认为你不太清楚你想要的是这样的东西,没有经过测试:
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
试试这个答案。您可以使用带有连接的UPDATE FROM语句来执行您的请求。谢谢,但我不想根据TableB记录更新父项id。我需要在TableB中找到记录并使用它更新TableA中的父id。请注意,TableA中的parent_id为null,1,2不是i1,i2。您只需调整链接答案中的值。这里提供了语法。我也看到了一个新的答案,这个问题似乎很合适。为什么父id在一个表中是字符串,在另一个表中是整数?这个名字让我很难理解这个问题。您似乎希望第一个表中的深度,但我不是100%确定。这正是我需要的。非常感谢你。