Sql server 比较没有嵌套for循环的行
我在mssql中有一个表,因为我对sql有点陌生,所以遇到了一个问题。该表由以下数据组成Sql server 比较没有嵌套for循环的行,sql-server,Sql Server,我在mssql中有一个表,因为我对sql有点陌生,所以遇到了一个问题。该表由以下数据组成 ID | Long | Lat | TimeStamp -----------+--------------+--------------+------------------ 123 | 54 | 18 | 2012-12-02... 143 |
ID | Long | Lat | TimeStamp
-----------+--------------+--------------+------------------
123 | 54 | 18 | 2012-12-02...
143 | 31 | 35 | 2011-09-14...
322 | 53 | 19 | 2012-11-29...
等等
我写了一个布尔函数,它检查一对long和lat的条件。我还编写了一个函数,它给出了一对long和lat之间的距离。我想做的是添加一个列,该列与行的距离最接近当前行,并且传递布尔函数,并且在时间上彼此足够接近。数据库表由数百万行组成,因此我避免使用嵌套for循环,你们将如何处理这个大型数据集?mssql有一些聪明的方法来实现这一点吗
欢迎提供所有帮助您基本上需要将函数中的100万条记录与100万条其他记录进行比较,这样您就可以使用1万亿个值。在我看来,SQL并不能真正帮助您管理那么多记录,因此您必须自己做一些工作,而且一次只能做一些工作。也许有更好的方法,但我会做以下几点:
计算的
目的地
,距离
计算的
为false的记录运行true
的记录,并计算到该位置的距离。如果位置是迄今为止最短的,则设置一个变量以临时存储目的地
和距离
目的地
和距离
。在数据库中更新该值,并将computed
标志设置为true
谢谢你的回复,它帮助我解决了这个问题。我的主要问题是,我在SQL方面做得太差了,这让我很尴尬:然而,在stackoverflow和google的帮助下,一切都是可能的。再次感谢@用户2071101——我的荣幸