SELECT T1.v1, T2.v1, T3.v1 FROM TableName T1, TableName T2, TableName T3 WHERE T1.v1 < T1.v2 AND T2.v1 < T2.v2 AND T3.v1 < T3.v2 AND T1.v1 = T3.v1 AND T1.v2 = T2.v1 AND T2.v2 = T3.v2
应该做的伎俩。我在那里所做的是确保所考虑的所有边缘的v1小于v2,只需删除重复项。然后,通过它们的起点/终点连接边缘是一件简单的事情。返回每对中的第一个点。
如果边缘从节点返回到同一节点,则可能需要根据需要添加额外的检查。
编辑:做了一个改变,感谢Legend。请注意我们需要确保T3中找到的边缘与T1中的边缘相匹配,因此我们必须将每个边缘连接在一起!最初我有T3.v1&gt; T3.v2在where子句的第一行但改变它以减少混淆,忘了改变第二部分虽然!