首页 > 解决方案 > psql 从 json 数组中选择条件

问题描述

我使用 json_agg 从 psql 查询中派生出这种 json 格式

[{
  "purchase_order_id":239,
  "supply_forecast_id":565,
  "purchase_order_status_history":[
{
  "purchase_order_status_history_id":779,
  "purchase_order_status_id":2}, 
{
  "purchase_order_status_history_id":778,
  "purchase_order_status_id":1}
]
}]

基于这个json。一条记录可以有多个状态历史。最新的状态历史将始终是数组中的第一个索引,在这种情况下是:

  "purchase_order_status_history_id":779,
  "purchase_order_status_id":2}, 

问题是如何查询我是否想获得具有最新状态的特定记录。如果我查询其中 purchase_order_status_id = 2 这条记录应该显示,但是当我查询 purchase_order_status_id = 1 时它不应该显示。

条件是查询将检查数组中的顶部/第一条记录并根据 purchase_order_status_id 检查值

我试着检查这个链接:

https://levelup.gitconnected.com/how-to-query-a-json-array-of-objects-as-a-recordset-in-postgresql-a81acec9fbc5

使用 Postgresql 查询检索 JSON 数组的前 N ​​条记录

但似乎无法弄清楚如何将其纳入我的问题。

标签: postgresqljson-arrayagg

解决方案


推荐阅读