1

重複の可能性:
PostGreSQL での複数の配列の交差

Pg 9.2 データベースの複数 (>2) の配列に共通する要素を識別しようとしています。データは次のように構成されています。

ID タイトル配列
1 title1 {a,b,c,d,...}
2 title2 {z,y,a,d,...}
3 title3 {d,a,p,q,...}
n . ... ... ...

上記の例から、SELECT は各配列の共通要素として {a,d} を返す必要があります。

以下を使用して、テストケースとして2つの配列でこれを機能させました。

...
select array_agg(e)
from (
select unnest(arr1) from cte_1
intersect
select unnest(arr2) from cte_2
) as dt(e)),
...

しかし、RECURSIVE CTE で正しく動作させることはできませんでした。オンラインおよびさまざまな Joe Celko の本/スニペットで、いくつかの有用な例を見つけました。

私が思いついた最高のものは、カスタム関数を使用したこの投稿でした:

PostgreSQL における複数配列の交差

しかし、RECURSIVE またはその他の手法を使用してこれを達成する方法があるはずです。

何か案は?

前もって感謝します。

4

1 に答える 1

0

null-free のみの交差が必要な場合はint[]、これが役立つ場合があります。そうでない場合は申し訳ありませんが、質問で明確にしませんでした。

CREATE EXTENSION intarray;

SELECT ARRAY[1,2,3]::int[] & ARRAY[3,4,5]::int[] & ARRAY[1,3,5,7]::int[] as intersection;
intersection 
--------------
{3}
(1 row)

完全なintarray contrib モジュールのドキュメントは次のとおりです。

編集: これは、おそらく役立つ回答を含む同様の質問です。ユーザーdepeszが最初に提案したことを試してみます。

于 2012-12-29T00:43:59.347 に答える