gpt4 book ai didi

arrays - 具有可选子集的无序集(数组)上的匹配表

转载 作者:行者123 更新时间:2023-11-29 12:59:58 25 4
gpt4 key购买 nike

我正在尝试根据一组特征匹配两个表中的观察结果。

Table1:
id1;set1
A;{1,2,3,4}
B;{6,9,4,5}

Table2:
id2;set2
F;{1,2,3,4}
G;{7,6,2,4}
H;{6,{1,9},4,5}

理论上集合是无序的,表1中集合的每个元素都应该匹配表2中的一个元素,但是当元素是子集时,表1中的元素应该属于表2中的子集。

结果应该是:


匹配表:
id1;id2
一个;F
B;H

表 1 中的“A”与表 2 中的“F”平凡匹配。匹配“B”、“H”比较复杂。 set1 的第二个元素“1”属于“{1,9}”,即“H”中的子集,这样就全部匹配了。

我应该如何在 Postgresql 中对这些数据建模并执行此匹配?

PS:忽略带有子集的集合的情况 H,我将 set1 和 set2 创建为数组,对它们进行排序,然后在数组字段上对表进行内部联接。

最佳答案

安装 intarray您可以在其中找到最适合您需要的 query_int 类型的扩展。

create extension if not exists intarray;

create table table1 (id1 text, set1 int[]);
insert into table1 values
('A', '{1,2,3,4}'),
('B', '{6,9,4,5}');

create table table2 (id2 text, set2 query_int);
insert into table2 values
('F', '1 & 2 & 3 & 4'),
('G', '7 & 6 & 2 & 4'),
('H', '6 & (1 | 9) & 4 & 5');

select id1, id2
from table1
join table2
on set1 @@ set2

id1 | id2
-----+-----
A | F
B | H
(2 rows)

关于arrays - 具有可选子集的无序集(数组)上的匹配表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33110384/

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