Запрос на предоставление ключа для сопоставления результатов в массивах postgres - PullRequest
0 голосов
/ 03 марта 2020

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

multi_id   |      value
------------------------------------
{V1,V2,V3} | PD1
{V4,V5}    | PD2 
{V6,V7}    | PD3 

Теперь я хочу значение где id = V2 и V7. Для этого я написал запрос типа

select * from some_table where multi_id && ‘{“V2”,“V7"}’;

Это дает мне результат как:

multi_id   |      value
------------------------------------
{V1,V2,V3} | PD1
{V6,V7}    | PD3 

, но я хочу:

some_column   |      value
------------------------------------
V2            | PD1
V7            | PD3 

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 03 марта 2020

Использовать гнездо:

select t.some_column, st.value
from unnest(array['V1','V7']) as t(some_column)
  join some_table st on t.some_column = any(st.multi_id);
1 голос
/ 03 марта 2020

Вы можете использовать unnest:

select t.id, t.value
from (
    select unnest(multi_id), value
    from table_name tn
) as t(id, value)
where t.id in ('V2', 'V7');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...