今天早上我問了一個非常相似的問題,它的回答很精美。Postgres通過3個表的內部聯接進行更新?
但是,在回顧了這個劇本之後,我發現我的實際問題是稍微比我在那個問題中描述的要複雜得多。基本上,我有3個Postgres的表:
[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
記錄像這樣:
[myschema].[animals]
--------------------
animal_id = 458
animal_attrib_type_id = 38
animal_attrib_value_id = 23
和相應animal_attrib_type
(與ID = 38)具有以下的值:
[myschema].[animal_attrib_types]
--------------------------------
animal_attrib_type_id = 38
animal_attrib_type_name = 'animals.should-make-noise'
和相應的animal_attrib_value
(id = 23)具有以下值:
[myschema].[animal_attrib_values]
--------------------------------
animal_attrib_type_id = 23
animal_attrib_type_name = 'true'
因此,相同的animal
記錄可以有多個類型/值對。在這種情況下,動物具有對應於「true
」的animal_attrib_value_name
的「animals.should-make-noise
」的animal_attrib_type_name
。
在運行時,我將只有animal_id
(即458)和animal_attrib_type_id
(即38)。我需要能夠查找相應的animal_attrib_value_name
,僅對應於給定的animal_id
和animal_attrib_type_id
,然後將其值更新爲某些靜態文本('true'或'false');全部來自相同的UPDATE語句。
上面提到的問題的答案對我提到的問題是正確的,但由於同一個動物具有0+類型/值組合,我實際上需要一個稍微不同的SQL語句。提前致謝!
可能重複[Postgres更新與跨表內部連接?](http://stackoverflow.com/questions/12600608/postgres-update-with-an-inner-join-across-2-tables) –
@Clodoaldo - 請實際閱讀我的問題!我在上面的第一句中提到了這個問題!我故意引用它。它也不是重複的!兩個不同的問題! – IAmYourFaja
任何將此關閉爲「完全重複」的人顯然不會讀這個問題的第一句話!也沒有看到這個鏈接問題的列表! – IAmYourFaja