SQL问题:选择没有重复的城市距离

时间:2010-07-26 20:02:53

标签: sql relational-database

我有一个包含列的表:city,x,y

我需要选择所有城市之间的距离而不重复 结果应该是这样的 city1,城2,距离

但 我不应该得到city2,city1,distance(因为我已经有了这些城市之间的距离...

对于那个正确的SQL查询是什么... 谢谢!

3 个答案:

答案 0 :(得分:4)

SELECT c1.City, c2.City, dbo.CalcDistance(c1.x, c1.y, c2.x, c2.y)
FROM Cities c1, Cities c2
WHERE c1.CityID > c2.CityID 

答案 1 :(得分:2)

SELECT
    C1.city,
    C2.city,
    <distance calculation>
FROM
    Cities C1
INNER JOIN Cities C2 ON
    C2.city_id > C1.city_id

我把距离计算留空了,因为它取决于你是否“像乌鸦一样”,使用街道路线,考虑到地球的曲率等等。

答案 2 :(得分:1)

你要做的事情被称为“跑步总数”。

小心使用像ON c1.CityID > c2.CityID这样的三角形连接,它们会创建一个笛卡尔积! (我不想与别人的答案争论。)

查看Jeff Moden关于运行总计的世界上最好的文章: Solving the "Running Total" & "Ordinal Rank" Problems (Rewritten)

如果您没有帐户,则必须创建一个帐户(只需要一个电子邮件地址)。但是,我保证这是值得的!