Mysql自联接而不是group_concat

时间:2016-03-22 11:52:55

标签: mysql sql

我有一个Mysql表Waypoint,其中保存了旅行的所有航路点:

ID,TripID,Location
1 ,5     ,Barcelona
2 ,5     ,Madrid
3 ,5     ,Valencia
4 ,6     ,Berlin
5 ,6     ,Hamburg
6 ,6     ,Munich

现在我希望获得所有可能的直达航班以涵盖整个行程

TRIPID,离开,目标

5,Barcelona,Madrid
5,Barcelona,Valencia
5,Madrid,Valencia
6,Berlin,Hamburg
6,Berlin,Munich
6,Hamburg,Munich

我已尝试过group_concat,但没有帮助

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你有什么图形问题,并且MySQL没有很好地解决这些问题。缺少的功能是递归查询。

但是,在你的情况下,我认为你可以通过自我加入做你想做的事情:

select wp1.tripid, wp1.location, wp2.location
from Waypoint wp1 join
     Waypoint wp2
     on wp1.tripid = wp2.tripid and wp1.id < wp2.id;

请注意<条件。它过滤掉了马德里,巴塞罗那和#34的形式的重复。