查询返回所需记录后,如何在多个记录中查找重复的json属性值

时间:2019-05-16 16:28:12

标签: sql arrays json postgresql

我正在执行查询以返回给定时间范围内的所有记录。在提取的这些记录中,我想检查多个JSON记录中某个属性是否存在重复值,以及是否存在多个值,然后执行额外的处理。

我的代码是:

SELECT jsonb_build_object('ID', t.col ->> 'id',
            'Number', t.col ->> 'num',
            'True/False', t.col ->> 'active',
            'Type', x.elem ->> 'type')
FROM tbl t
CROSS  JOIN LATERAL (
   SELECT elem
   FROM   jsonb_array_elements(t.col -> 'array1') a(elem)
   WHERE a.elem ->> 'date' between '01012019' and '01022019'
   AND a.elem ->> 'type' = 'Good' OR a.elem ->> 'type' = 'Bad'
   ORDER  BY a.elem ->> 'date' DESC NULLS LAST
   LIMIT  1
   ) x;

上面的查询从给定的时间范围内提取我想要的所有记录,但是'id'字段可以在多个记录中具有相同的值。我想根据最新的“日期”提取“ id”记录,并从数据输​​出中删除重复的“ id”记录。

期望的输出在所有记录中应具有所有唯一的“ id”值,但每条记录将具有基于最高“日期”值的最新“ array1”数据。

0 个答案:

没有答案