我知道标题措辞不太好,但是我想不到更好的说法了。
我正在学习Ruby并刷新MySQL。我使用一个已完成航班历史列表作为练习数据集,大约有10万行可供使用。每个航班记录包括出发地和目的地机场(字段“origin”和“dest”)以及总飞行距离(字段“distance”)。
作为一项练习,我想按照距离降序显示前10条最长的路线。但是,我想将每对端点视为单个路线,而不考虑哪个是起点,哪个是终点。例如,JFK-LAX和LAX-JFK应被视为单个路线。
当我运行查询时:
SELECT DISTINCT distance, origin, dest FROM flights ORDER BY distance DESC LIMIT 10;
当然,我理解这个。
["2704", "BOS", "SFO"]
["2704", "SFO", "BOS"]
["2689", "BOS", "SJC"]
["2689", "SJC", "BOS"]
["2615", "LAX", "LIH"]
["2615", "LIH", "LAX"]
["2614", "HNL", "SAN"]
["2614", "SAN", "HNL"]
["2611", "BOS", "LAX"]
["2611", "LAX", "BOS"]
这不是我想要的。我想说的是,“选择距离和端点最长的10条路线,无论机场是起点还是终点。”
我想到的一个方法是按字母顺序对每对端点进行排序,并将它们连接起来创建唯一的路线,例如,LAX 和 JFK = “JFKLAX”。但我不知道如何做到这一点并将其传递给我的原始查询,甚至不知道是否这是最好的方法。
这可以纯粹在 SQL / MySQL 中完成吗?