Q:

PSQL 表含有一列 id 数组,如何查询 id 对应名字的数组。(至于为什么当初不是 json 数组不在此问题的讨论范围)

A:

CREATE TABLE items
(
    id   SERIAL PRIMARY KEY,
    name text
);

insert into items(name)
values ('name1'),
       ('name2'),
       ('name3'),
       ('name4');


CREATE TABLE test_items
(
    id    SERIAL PRIMARY KEY,
    items int[]
);

insert into test_items(items)
values (array [1, 2]),
       (array [3, 4]);

select
    distinct test_items.id,
    test_items.items,
    array_agg(items.name) over (partition by test_items.id)
from test_items
    left join items on items.id = any (test_items.items)

重点关注  partition any distinct 的用法。

 

jiamo post at 2021-02-23