我有一個表名doc_definition
與json
列definition
具有類似的格式:如何從兩個不同的表中查詢JSON數組?
[{
"id":"0",
"name:"Ques1"
},{
"id":"1",
"name:"Ques2"
},{
"id":"2",
"name:"Ques3"
}]
,併爲具有另一json
列def_val
與格式另一個表doc
:
{
"0":{
"value":"Ans1"
},
"1":{
"value":"Ans2"
},
"2":{
"value":"Ans3"
}
}
我想創建一個Postgres SQL查詢,通過匹配兩個json中的id字段來給出相應問題的值。 到目前爲止,我想出了這一點:
SELECT json_array_elements(def.definition) ->> 'name' AS json_test
FROM document_definitions AS def
INNER JOIN documents AS doc
ON doc.document_definition_id = def.id
WHERE doc.id = 892 AND json_array_elements(def.definition) ->> 'name' = 'Ques2'
但這拋出異常:
ERROR: argument of AND must not return a set
當我把json_array_elements(def.definition) ->> 'name' = 'Ques2'
在SELECT
條款,它返回boolean值。
我不知道什麼是錯的。 Plz幫助?
你得重新考慮.... json_arra_elements'的'定義爲'擴展JSON數組一組JSON values.' ..That的爲什麼第一次查詢失敗。進一步,。因爲在該組值'Ques2'存在的情況下,第二個查詢返回true ...閱讀此https://www.postgresql.org/docs/9.5/static/functions-json.html並嘗試重新考慮您的方法 –
@ JasonKrs我重新思考了我的方法,並提出了一個適用於我的查詢。我已將它發佈在答案中。如果有什麼我可以改進的,請告訴我。 – dARKaRK1002