【发布时间】:2011-01-30 00:18:25
【问题描述】:
我在数据库中有两个表:
CREATE TABLE items(
id SERIAL PRIMARY KEY,
... some other fields
);
此表包含具有唯一 ID 的数据行。
CREATE TABLE some_chosen_data_in_order(
id SERIAL PRIMARY KEY,
id_items INTEGER[],
);
此表包含数组类型字段。每行包含表items 中的ID 值,按特定顺序排列。例如:{2,4,233,5}。
现在,我想从表 items 中获取数据,以获取表 some_chosen_data_in_order 中所选行的数据,其中包含数组类型中元素的顺序。
我的尝试是加入:
SELECT I.* FROM items AS I
JOIN some_chosen_data_in_order AS S ON I.id = ANY(S.id_items) WHERE S.id = ?
第二次尝试是子查询:
SELECT I.* FROM items AS I
WHERE I.id = ANY
(ARRAY[SELECT S.id_items FROM some_chosen_data_in_order WHERE id = ?])
但它们都没有按照数组字段中的顺序保持 ID。您能帮我吗,如何从items 表中获取与特定行的some_chosen_data_in_order 表中的数组ID 顺序相对应的数据?
【问题讨论】:
标签: sql arrays postgresql join