问题描述
我有一个表,其中包含帐户验证行。一个帐户可以有一个或多个与之相关的行,具体取决于它进行验证的尝试次数。
在每个条目中都有一个参考,它告诉我该帐户的特定唯一参数是否出现在其他帐户验证中。问题在于引用也可以指向同一帐户,这对我没有用。我想找到共享唯一参数的帐户-即参考指向不同帐户的地方。
我在表中没有唯一的参数,这会使它变得容易得多。
这是一个示例(按创建时间排序):
| verification_id | account_id | reference |
|-----------------|--------------|-----------|
| 4a | 4 | 4a |
| 3a | 3 | 1a,3a |
| 2b | 2 | 2a,2b |
| 2a | 2 | 2a |
| 1a | 1 | 1a |
我对参考文献指出2a和2b验证中都出现唯一参数这一事实不感兴趣,因为它们属于同一个帐户。
我很感兴趣一个事实,即参考单元格(即1a,3a)指出,account_id 1和3中都出现了唯一参数。
这是我要寻找的结果:
| account_id | connected to |
|-------------|--------------|
| 1 | 3 |
| 3 | 1 |
或者仅第一行就足够了。
希望我在解释问题和结果方面做得很好。
解决方法
加入account_id
和verification_id
的不等式,然后测试与&&
的数组重叠:
select a.account_id,b.account_id as connected_to
from verification a
join verification b
on a.account_id != b.account_id
and a.verification_id != b.verification_id
and string_to_array(a.reference,',') &&
string_to_array(b.reference,');