Поиск несуществующего значения в столбце PostgreSQL - PullRequest
0 голосов
/ 17 апреля 2020

Я работаю над репозиторием DSpace 5.10 с Postgr SQL 9.x. Проблема заключается в том, что при сборе урожая во многих пунктах отсутствуют метаданные, требуемые регулирующим органом моей страны. Есть ли способ узнать, какие itemID не имеют поля c спецификаций?

Например:

Мне нужен запрос, который дает мне в результате все resource_id, которые не ' не имеет metadatafield_id = X. Один и тот же resource_id имеет много записей metadata_field_id.

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Вам необходимо получить список всех элементов, которые не имеют заданных c метаданных, поэтому проще всего исключить из полного списка те, которые на самом деле имеют такие метаданные

select item_id from item where item_id not in 
(
   select resource_id from resourcepolicy where 
      resource_type_id = 2 and metadata_field_id = ?
);
0 голосов
/ 18 апреля 2020

Если я вас правильно понимаю:

  1. Вы хотите вернуть все resource_id, которые не имеют X в поле metadatafield_id.
  2. На resource_id имеется несколько строк, но только некоторые из этих строк не содержат X в соответствующих столбцах metadata_field_id.

Если это так, попробуйте следующее:

SELECT distinct resource_id
FROM your_table_name
WHERE metadata_field_id != 'X'

Используя distinct, вы удаляете все повторяющиеся строки. Таким образом, вы вернете только уникальный resource_id. Не используя distinct, вы вернете дублированные записи для resource_id в своем результате.

Здесь - это PostgreSQL документация для distinct.

РЕДАКТИРОВАТЬ: distinct поддерживается только в PostgreSQL версии 9.5 +

...