#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
. Мне кажется, что использование огромной карты, на которой координаты предварительно сопоставлены, было бы намного быстрее, поскольку для получения результатов не нужно вычислять все строки дважды.