背景故事:为了帮助我的应用快速计算两个拉链之间的乌鸦飞行距离(以及谷歌地图的距离......),我将数据存储在一个基本上有三列的表中:ZipCode1
,{{ 1}}和Zipcode2
。
我的数据库中有另一个名为Distance
的表,其中包含所有美国邮政编码。
我想用所有独特的“邮政编码对”预先填写我的距离表。由于我不想要重复对,Zipcodes
的整数值应始终小于ZipCode1
。
所以,这给我带来了一个难题,即找出最快/最好的方法来做到这一点。奖励积分如果还有一种方法可以重新运行该方法以添加缺失的对。
如果我用C#对它进行编码,那么写出来会很简单,但运行得非常慢(据我所知)。必须有一些更快的方法,也许是通过直接SQL?
感谢任何帮助/想法。
答案 0 :(得分:1)
尝试以下查询,该查询应生成所有对并将它们全部插入到目标表中:
INSERT INTO ZipcodePairs (Zipcode1, Zipcode2)
SELECT z1.Zipcode, z2.Zipcode
FROM Zipcodes z1
JOIN Zipcodes z2 ON (z1.Zipcode < z2.Zipcode);
答案 1 :(得分:1)
试试这个......
INSERT INTO YOUR_DISTANCE_TABLE
(ZIPCODE1, ZIPCODE2)
SELECT A.ZIPCODE, B.ZIPCODE FROM ZIPCODES A
CROSS JOIN ZIPCODES B
WHERE A.ZIPCODE<B.ZIPCODE