我有两个表叫做resource
和resource_owners
。
该resource_owners
表包含名为resource_id
和 的两列owner_id
。
resource_id | owner_id | -------------+-----------
该resource
表包含两个相关列:parentresource_id
和id
。
parentresource_id | id | -------------------+------
resource_owners.resource_id
,resource.id
和resource.parentresource_id
都是两个表之间的连接列。现在我想做的是以下内容:
对于resource
表中的每一行,取值 in id
,将其与相应的 匹配resource_owners.resource_id
,检索相应的resource_owners.owner_id
值(称为 $owner_value),然后设置resource_owners.owner_id
为 $owner_value其中 resource_owners.resource_id
equals resource.parentresource_id
。
用会话术语来说,这就是我想要做的:对于每个资源,我想将父资源的 owner_id 重新分配为资源的 owner_id。
我试图解决这个问题,看起来我需要两个不同的表连接(resource.id
withresource_owners.resource_id
和resource.parentresource_id
with resource_owners.resource_id
)。
有人可以指出我正确的方向吗?我想要的甚至可以通过单个查询实现吗?如果 PostgreSQL 脚本更适合我的用例,我也可以。
我不确定您使用的是什么数据库,但如果我正确理解您的问题,您应该能够使用以下逻辑完成:
UPDATE RESOURCE_OWNER SET OWNER_ID = UP.OWNER_ID FROM (SELECT rc.ID, TMP.OWNER_ID FROM (SELECT RSC.ID, ROWRS.OWNER_ID, ROWRS.RESOURCE_ID FROM RESOURCE RSC JOIN RESOURCE_OWNER ROWRS ON RSC.ID = ROWRS.RESOURCE_ID) TMP JOIN RESOURCE rc on rc.PARENTRESOURCE_ID = TMP.RESOURCE_ID) UP WHERE RESOURCE_OWNER.RESOURCE_ID = UP.ID;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句