Postgres 使用跨 2 个表的内部联接进行更新?

2024-02-29

我的本地 Postgres 数据库中有 3 个表:

[myschema].[animals]
--------------------
animal_id
animal_attrib_type_id (foreign key to [myschema].[animal_attrib_types])
animal_attrib_value_id (foreign key to [myschema].[animal_attrib_values])

[myschema].[animal_attrib_types]
--------------------------------
animal_attrib_type_id
animal_attrib_type_name

[myschema].[animal_attrib_values]
--------------------------------
animal_attrib_value_id
animal_attrib_value_name

在运行时我会知道animal_id。我需要运行 SQL 来更新animal_attribute_value_name与此项目相关联,例如:

UPDATE
    animal_attribute_values aav
SET
    aav.animal_attribute_value_name = 'Some new value'
WHERE
    # Somehow join from the provided animal_id???

我可能需要做某种嵌套SELECT or INNER JOIN在 - 的里面WHERE条款,但不知道如何做到这一点。提前致谢!

Edit:

假设我有一个animal记录以下值:

[myschema].[animals]
--------------------
animal_id = 458
animal_attrib_type_id = 38
animal_attrib_value_id = 23

以及相应的animal_attrib_value(id = 23)具有以下值:

[myschema].[animal_attrib_values]
--------------------------------
animal_attrib_value_id = 23
animal_attrib_value_name = 'I am some value that needs to be changed.'

在运行时,我只有animal_id(458)。我需要查找对应的animal_attrib_value(23) 并改变其animal_attrib_value_name to 'Some new value',全部都在单个 UPDATE 语句内。


UPDATE
    animal_attribute_values aav
SET
    animal_attribute_value_name = 'Some new value'
FROM animals aa
WHERE aa.animal_id = 458
AND aa.animal_attrib_value_id = aav.animal_attrib_value_id
  ;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Postgres 使用跨 2 个表的内部联接进行更新? 的相关文章

随机推荐