IAm*_*aja 9 sql postgresql inner-join rdms sql-update
我在本地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
Run Code Online (Sandbox Code Playgroud)
在运行时我会知道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???
Run Code Online (Sandbox Code Playgroud)
我可能不得不做一些嵌套SELECT或INNER JOIN在WHERE子句内部,但不知道如何做到这一点.提前致谢!
编辑:
假设我有一个animal包含以下值的记录:
[myschema].[animals]
--------------------
animal_id = 458
animal_attrib_type_id = 38
animal_attrib_value_id = 23
Run Code Online (Sandbox Code Playgroud)
相应的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.'
Run Code Online (Sandbox Code Playgroud)
在运行时,我只有animal_id(458).我需要在单个UPDATE语句中查找相应的animal_attrib_value(23)并将其更改animal_attrib_value_name为'Some new value'.
wil*_*ser 27
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
;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27711 次 |
| 最近记录: |