加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – Postgres更新与内部连接跨2个表?

发布时间:2020-12-12 08:40:10 所属栏目:MsSql教程 来源:网络整理
导读:我的本地Postgres数据库中有3个表: [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].[a
我的本地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???

我可能必须在WHERE子句中做一些嵌套的SELECT或INNER JOIN,但不知道该怎么做.提前致谢!

编辑:

假设我有一个具有以下值的动物记录:

[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更改为“一些新值”,这些都在单个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
  ;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读