Предположим, есть таблица json_table
со столбцами id (int), data (jsonb)
. Пример значения jsonb будет
{"a": [{"b":{"c": "xxx", "d": 1}},{"b":{"c": "xxx", "d": 2}}]}
Когда я использую оператор SQL, подобный следующему:
SELECT data FROM json_table j, jsonb_array_elements(j.data#>'{a}') dt WHERE (dt#>>'{b,d}')::integer NOT IN (2,4,6,9) GROUP BY id;
... два элемента массива не являются вложенными, и тот, который соответствует предложению WHERE, все еще возвращается. Это имеет смысл, поскольку каждый элемент массива рассматривается отдельно. В этом примере я верну полную строку
{"a": [{"b":{"c": "xxx", "d": 1}},{"b":{"c": "xxx", "d": 2}}]}
Я ищу способ исключить полную строку json_table
, когда какой-либо элемент массива jsonb не соответствует условию