【发布时间】:2017-01-07 11:05:22
【问题描述】:
我有一个代表图表的表格:
| FROM_ID | TO_ID |
-------------------
| 1 | 9 |
| 1 | 8 |
| 1 | 7 |
| 2 | 7 |
| 2 | 8 |
| 3 | 9 |
| 3 | 7 |
| 4 | 6 |
| 4 | 8 |
在实际示例中,有约 500 万行具有约 5k 独特的 FROM 和约 100k 独特的 TO
我想找到所有对 (FROM_ID_X, FROM_ID_Y) s.t.每个 FROM_ID 的 TO_ID 集是另一个 FROM_ID 的严格超集。
所以在这个例子中我会得到:
(1,2), (1,3)
为了更清楚地说明这一点: 每行代表图中的一条边。图中的每个节点都属于 A 类或 B 类。一个 A 类节点连接到一个或多个 B 类节点。我想找到 A s.t. 类型的节点对。其中一个指向另一个的严格子集。
使用 postgres fwiw
【问题讨论】:
-
什么是
F?我不跟随。你能重新提出你的问题吗? -
更好? F 只是 from 的简写
-
但如果
TO_ID的集合是另一个FROM_ID的集合的 strict 超集,则有多种选择:简单地添加一个、添加所有等等. 换句话说,结果不是确定性的…… -
(1,3)来自哪里?您的示例数据中没有这样的行 -
FROM_ID 1 的 TO_ID 集是 {9,8,7},FROM_ID 2 是 {8,7},From id 3 是 {9,7},FROM_ID 4 是 {8 ,6}。因此,2 和 3 都是 1 的子集,但 4 不是
标签: sql postgresql