我在数据库中有两个表:
CREATE TABLE items(
id SERIAL PRIMARY KEY,
... some other fields
);
该表包含带有唯一ID的Come数据行。
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与数组字段中的ID保持相同的顺序。您能帮我吗,如何从
items
表中获取数据,并与特定行的some_chosen_data_in_order
表中的数组ID顺序相对应? 最佳答案
SELECT t.*
FROM unnest(ARRAY[1,2,3,2,3,5]) item_id
LEFT JOIN items t on t.id=item_id
上面的查询从
items
表中依次选择ID为1,2,3,2,3,5的项目。