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> T3.v2 в первой строке предложения where, но изменил его, чтобы уменьшить путаницу, однако забыл изменить вторую часть!