как получить строку на основе json данных, хранящихся в столбце в Postgresql - PullRequest
2 голосов
/ 28 апреля 2020

У меня есть такая таблица

| is_selcted_cours   | content                                     | value |
|   (boolean)        |(json)                                       |       |
------------------------------------------------------------------------------
|    true   | {"date":"07-Apr-2020","amount":"5050","type":"CT"}    |   1    |
|    false  | {"date":"07-Jun-2020","amount":"50","type":"CT"}      |   1    |
|    true   | {"date":"10-Aug-2020","amount":"6050","type":"MT"}    |   1    |
|    false  | {"date":"07-Jun-2020","amount":"50","type":"CT"}      |   2    |
|    true   | {"date":"07-Apr-2020","amount":"5050","type":"GT"}    |   3    |
|    true   | {"date":"07-Apr-2020","amount":"5050","type":"GT"}    |   3    |
|    true   | {"date":"07-Apr-2020","amount":"5050","type":"GT"}    |   3    |

Я хочу получить все дублирующиеся строки (здесь дубликаты означают строки, содержащие is_selcted_cours is true и the value of date, amount in the content column, имеющие одинаковое значение), как в этой таблице выбранные строки будут 1,5,6,7

1 Ответ

2 голосов
/ 28 апреля 2020

Я бы использовал для этого условие EXISTS:

select d1.*
from data d1
where is_selcted_cours
and exists (select *
            from data d2
            where d1.content ->> 'date' = d2.content ->> 'date'
              and d1.content ->> 'amount' = d2.content ->> 'amount'
              and d2.is_selcted_cours = d1.is_selcted_cours
              and d1.id <> d2.id)

d1.id <> d2.id необходимо, чтобы не сравнивать строку с самим собой. id считается столбцом первичного (или уникального) ключа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...