次のような有向グラフでエッジを保持するテーブルがあるとします。
CREATE TABLE edges (
from_here int not null,
to_there int not null
)
特定のノードの個別の無向リンクの数を取得するための最も良い方法は何ですか?重複する有向エッジはなく、ノード自体に直接リンクされていません。重複する無向エッジ(となど)を2回カウントすることは避けたいだけ(1,2)
です(2,1)
。
これは機能しますが、私にはNOT IN
悪臭がします:
SELECT COUNT(*)
FROM edges
WHERE from_here = 1
OR (to_there = 1 AND from_here NOT IN (
SELECT to_there
FROM edges
WHERE from_here = 1
))
これにはPostgreSQL固有のソリューションで十分です。