回答

收藏

Postgres更新两个表之间的内部连接?

技术问答 技术问答 252 人阅读 | 0 人回复 | 2023-09-14

我的本地Postgres数据库中有三个表:
* F' H; Z( O) |" ^[myschema].[animals]--------------------animal_idanimal_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_idanimal_attrib_type_name[myschema].[animal_attrib_values]--------------------------------animal_attrib_value_idanimal_attrib_value_name我会知道的animal_id。我需要运行SQL来更新animal_attribute_value_name与本项目相关的内容相似:
7 r1 m2 J5 _& s4 R% N3 S& W( a2 _, W, qUPDATE    animal_attribute_values aavSET    aav.animal_attribute_value_name = 'Some new value'WHERE    # Somehow join from the provided animal_id???我可能必须执行某种嵌套SELECT或INNER JOIN在WHERE操作在句子中,但不确定如何执行。提前感谢!: u3 k' I# y& f+ H) J; p7 h
编辑    :
# X& S8 W$ Z* `) m+ I假设我有一个animal记录下列值:; Q3 n, E: e9 ?
[myschema].[animals]--------------------animal_id = 458animal_attrib_type_id = 38animal_attrib_value_id = 23相应的animal_attrib_value(id = 23)具有以下值:+ ?# h# L: p# i; {5 N- z8 M
[myschema].[animal_attrib_values]--------------------------------animal_attrib_value_id = 23animal_attrib_value_name = 'I am some value that needs to be changed.'运行时,我只有animal_id(458)UPDATE在句子中找到对应的animal_attrib_value(23)并更改animal_attrib_value_name为'Somenew value'。! F, Y: E0 Y+ O# c
                                                                ( a+ T% Z; q$ g9 ?, s" k. x  F
    解决方案:                                                                  d( d3 F: p% \6 v( J
                                                                UPDATE    animal_attribute_values aavSET    animal_attribute_value_name = 'Some new value'FROM animals aaWHERE aa.animal_id = 458AND aa.animal_attrib_value_id = aav.animal_attrib_value_id  ;
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则