如何编写查询以确定'AB'和'BA'是否相同?

时间:2017-08-05 23:07:42

标签: mysql sql self-join

我有点卡在这里。我正在尝试为每条路线分配一个唯一的路线ID,无论是单程还是往返。

例如,我有两列,原点和目的地:

  • DC到NYC - > routeA
  • NYC to DC - > routeA
  • 纽约到波士顿 - > routeB
  • 波士顿到迈阿密 - > routeC
  • 迈阿密到纽约 - >路由
  • 迈阿密到波士顿 - > routeC

换句话说,我如何编写一个查询来标记DC到NYC和NYC到DC基本上相同的路由(routeA)而不是一个不同的路由。在这种情况下,我只关心城市对,而不是旅行的方向。

PS:我正在使用MySQL

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以通过执行以下操作来枚举对:

select t.*,
       concat_ws(':', least(origin, destination) as city1,
                 greatest(origin, destination) 
                ) as route_name
from t;

或者,另一种方法是创建路线名称:

{{1}}