Расстояние координат SQL

#java #sql #h2

#java #sql #h2

Вопрос:

Таблица: UserCoordinate , PK: UserName , Значения: X , Y

Предполагая UserName , что Джон находится в координатах (50,50)…

Как выбрать UserCoordinate строки, находящиеся на расстоянии 20, которые ближе всего к (50,50) с ограничением в 30 результатов?

 SELECT * FROM UserCoordinate
WHERE(
        SQRT(SQUARE(ABS(50 - X))   SQUARE(ABS(50 - Y))) < 20
)
ORDER BY (SQRT(SQUARE(ABS(50 - X))   SQUARE(ABS(50 - Y)))) ASC
LIMIT 30;
  

Как правильно написать вышеизложенное?

Я использую базу данных H2 и имею полный контроль над программным кодом (Java).

Комментарии:

1. Так в чем же именно проблема?

2. в чем проблема… ошибки? .. результат worn? … нет результата? .. показать правильную выборку данных и ожидаемый результат..

3. Извините. Помимо того, что я не уверен, работает ли это, я очень обеспокоен производительностью приведенного выше запроса, если их много UserCoordinates . Мне кажется, что использование огромной карты, на которой координаты предварительно сопоставлены, было бы намного быстрее, поскольку для получения результатов не нужно вычислять все строки дважды.