如何查找切换两列值的行?

时间:2015-10-16 16:00:13

标签: sql oracle11g

我有一个包含三列的表:StartingId,EndingId和TripCount。起始和结束ID分别是行程开始和结束的位置的PK。 TripCount包含一个整数,表示人们在起始位置和结束位置之间旅行的次数。

有时候,一次旅行的结束ID成为另一次旅行的起始ID。当反转起始和结束ID时,计数可能也会有所不同。

以下是一些示例数据:

StartingId   EndingId   TripCount
100          200        1023
101          300        5214
200          100        600
650          200        100

如何仅返回另一行和TripCount的反向行。我想要的结果:

StartingId   EndingId   TripCount
100          200        1023
200          100        600

2 个答案:

答案 0 :(得分:6)

您使用不同的别名加入表本身。您希望一个表的StartingId等于同一个表的EndingId,反之亦然。

int foo(int a, int b) {
    return a + b;
}

SQL Fiddle Demo

答案 1 :(得分:0)

您可以使用exists子句:

select startingID
     , endingID
     , tripCount
  from myTable t
 where exists (select 1
                 from myTable t2
                where t2.startingID = t.endingID 
                  and t2.endingID = t.startingID)