gpt4 book ai didi

sql - 具有数组元素顺序的数组类型的PostgreSQL JOIN,如何实现?

转载 作者:行者123 更新时间:2023-11-29 11:07:05 24 4
gpt4 key购买 nike

我在数据库中有两个表:

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 顺序相对应的数据?

最佳答案

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 的项目。

关于sql - 具有数组元素顺序的数组类型的PostgreSQL JOIN,如何实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2486725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com