0

我在 PostgreSQL 中有一个 jsonb 列,它可以具有以下 json 数组引用:

[
  {
    "endTime": {
      "dayOfWeek": "TUESDAY",
      "timeOfDay": {
        "hours": 14,
        "minutes": 30
      }
    },
    "skillCode": "1000124",
    "startTime": {
      "dayOfWeek": "TUESDAY",
      "timeOfDay": {
        "hours": 9,
        "minutes": 0
      }
    },
    "premiumBreak": {
      "hours": 0,
      "minutes": 0
    },
    "standardBreak": {
      "hours": 0,
      "minutes": 30
    }
  },
  {
    "endTime": {
      "dayOfWeek": "WEDNESDAY",
      "timeOfDay": {
        "hours": 14,
        "minutes": 30
      }
    },
    "skillCode": "1000176",
    "startTime": {
      "dayOfWeek": "WEDNESDAY",
      "timeOfDay": {
        "hours": 9,
        "minutes": 0
      }
    },
    "premiumBreak": {
      "hours": 0,
      "minutes": 0
    },
    "standardBreak": {
      "hours": 0,
      "minutes": 30
    }
  },
  {
    "endTime": {
      "dayOfWeek": "THURSDAY",
      "timeOfDay": {
        "hours": 14,
        "minutes": 30
      }
    },
    "skillCode": "1000176",
    "startTime": {
      "dayOfWeek": "THURSDAY",
      "timeOfDay": {
        "hours": 9,
        "minutes": 0
      }
    },
    "premiumBreak": {
      "hours": 0,
      "minutes": 0
    },
    "standardBreak": {
      "hours": 0,
      "minutes": 30
    }
  }
]

我有 10k+ 条记录,必须根据以下标准获取记录:

具有此数组对象的记录具有-> 相同的“endTime”、“startTime”但不同的“skillCode”。

如何编写查询以获取具有上述条件的所有记录的列表。

我做了什么 :

  1. 我能够基于一个键获取基于 json 对象数组列的记录。

SELECT * FROM table t WHERE EXISTS (SELECT * FROM jsonb_array_elements(t.column) AS jsond WHERE (jsond ->> 'skillCode')::int = 1000128);

  1. 但是无法像我们通过循环和签入 Java 代码那样来比较对象之间的差异。
4

0 回答 0