0

假设我有一个名为 Place 的表,其中包含列:

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

它们是什么列并不重要,只要了解一下即可。

现在假设我以某种方式收到一个点的纬度和经度,我想要实现的是从表 Place 行中选择,其中 GLength 值是最小的。

当我在mysql中做这样的事情时很容易:

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

但通常我不知道如何使用变量进行这样的查询(我不擅长 mysql)有什么帮助吗?

我会使用 GLength(..) 的 order 并将结果限制为 1,但是我怎样才能进行这样的迭代呢?

我的目标是通过 Java 和 Hibernate 触发代码作为本机 sql 查询

4

1 回答 1

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;
于 2012-03-26T15:51:09.507 回答