选择具有最小长度值的行

时间:2012-03-26 14:22:38

标签: mysql geospatial spatial opengis

假设我的表名为Place with columns:

placeId int not null auto_increment,
latitude double,
longitude double,

不管它们是什么列并不重要,只要明白一点。

现在让我说我收到一个点的纬度和经度,我想要实现的是从表格行中选择,其中GLength值是最小的。

当我在mysql中执行类似的操作时很容易:

SET @ls = 'LineString(50.123 23.321,51.567 23.123)';
SELECT GLength(GeomFromText(@ls));

但一般来说我不知道​​如何使用变量进行此类查询(我在mysql上很差)有什么帮助吗?

我使用GLength(..)的命令并将结果限制为1,但是如何进行这样的迭代呢?

我的目标是通过Java和Hibernate作为本机sql查询来激活代码

1 个答案:

答案 0 :(得分:0)

好的,和我的队友一起做,如果有人想要的话,这就是选择:

SELECT GLength(
    linestringfromwkb(
    LineString(
        GeomFromWKB(Point(j.latitude,j.longitude))
    ,GeomFromWKB(Point(51,22))))),j.latitude,j.longitude FROM my_database.place_table j 
order by 
GLength(
    linestringfromwkb(
    LineString(
        GeomFromWKB(Point(j.latitude,j.longitude))
    ,GeomFromWKB(Point(51,22))))) asc
limit 1;