MySQL Where子句 - 获取ID为1. row<的两个城市。 ID为2.行

时间:2014-06-18 09:54:44

标签: mysql where rows having

我有两张桌子:

1)带旅行的桌子

id | title
------------------------
 1 | travel1
 2 | travel2
 3 | travel3

2)带有城市的表

id | city      | travel_ID
------------------------
 1 | London    | 1
 2 | York      | 1
 3 | Newcastle | 1
 4 | London    | 2
 5 | Newcastle | 2
 6 | Newcastle | 3
 7 | York      | 3

城市的ID也意味着订单。

所以问题是:如果宣布城市(从A到B),我怎样才能获得旅行。 (例如从约克到纽卡斯尔应该从伦敦到纽卡斯尔旅行1 - 旅行1和旅行2)

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你需要旅行ID,其中第一个城市的id小于第二个城市的id。

如果是这样,那么这可能就是你要找的东西:

select c1.travelid
from cities c1 join
     cities c2
     on c1.city = $CITY1 and
        c2.city = $CITY2 and
        c1.travelid = c2.travelid and
        c1.id < c2.id;

如果您想要这个名字,可以加入:

select t.*
from travels t join
     cities c1
     on c1.travelid = t.travelid join
     cities c2
     on c1.city = $CITY1 and
        c2.city = $CITY2 and
        c1.travelid = c2.travelid and
        c1.id < c2.id;