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 的用法。