给定一个在有向图中保存边的表格,如下所示:
CREATE TABLE edges (
from_here int not null,
to_there int not null
)
获取特定节点的不同无向链接数量的最佳方法是什么?没有任何重复的有向边,也没有任何节点直接链接到它们自己,我只是想避免计算重复的无向边(例如(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 特定的解决方案对此很好。