【发布时间】:2021-06-07 07:54:51
【问题描述】:
假设我有一个 JSON 列 json,其中包含以下数据:
+----+-----------------+
| id | json |
+====+=================+
| 1 | [ |
| | { |
| | "type":"a", |
| | "id":11111 |
| | }, |
| | { |
| | "type":"a", |
| | "id":22222 |
| | }, |
| | { |
| | "type":"b", |
| | "id":11111 |
| | } |
| | ] |
+----+-----------------+
| 2 | [ |
| | { |
| | "type":"b", |
| | "id":11111 |
| | |
| | }, |
| | { |
| | "type":"b", |
| | "id":22222 |
| | |
| | }, |
| | { |
| | "type":"c", |
| | "id":11111 |
| | } |
| | ] |
+----+-----------------+
有没有办法确定这个数组中是否有一个条目具有type = a 和id = 11111(在同一个对象中),这样会返回第 1 行而不是第 2 行?
我尝试过的类似于
SELECT *
FROM table
WHERE json->>"$[*].type" = "a"
AND json->>"$[*].id" = 11111
但这不是同一个条目。
【问题讨论】: