[英]Sub Queries in Sql
我在我的應用程序中使用 postgres 作為數據庫。
因為我有一個 jsonb 列並用於在其中存儲 json 數據。
{
"id": "manohar",
"array": [
{
"status": "active",
"date": "13/12/2022"
},
{
"status": "InActive",
"date": "13/12/2021"
}
]
}
因此,每次我編寫子查詢以根據數組對象內的最大日期選擇任何字段時,都會在這里。 這里的問題是我在每個 json 對象中有 100 個字段,所以每次我必須為每個字段編寫子查詢時。
使用子查詢后,性能看起來會降低。
這是我正在使用的查詢
Select
(select t.sub_array->>'status'
from tbl_name d
cross join lateral (
select t.item as sub_array
from jsonb_array_elements(d.column_name -> 'array') as t(item)
where t.item ->> 'date' <= TO_CHAR(CURRENT_DATE, 'YYYY-MM-DD')
order by (t.item ->> 'date')::date desc
limit 1
) t where t.primaryKey = d.key) as status
--like I have to write 100 subqueries for 100's fields
from tbl_name t
where t.id='3'
我不想將視圖用於此要求。
任何更好的方法或建議都會有所幫助。
謝謝..
您必須使用lateral view
來訪問 JSON。 但是在數據庫中存儲和訪問 JSON 並不是 SQL 最佳實踐的一部分。
在您的情況下,我只能建議您更改數據模型。 存儲JSON是一回事,你可以使用blob
字符串來存儲它,應該沒問題。 但是在寫的同時,還應該把它的內容分表/列/行。 因此,您可以更輕松地訪問其內容。
這個想法是:
這只是您應該做什么的一個示例。 您可能需要找到漂亮的名稱來反映每個對象的業務價值。
表“id”
ID | 名稱 |
---|---|
1 | 馬諾哈爾 |
表“id_status”
ID | 地位 | 日期 |
---|---|---|
1 | 不活躍 | 13/12/2021 |
1 | 積極的 | 13/12/2022 |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.