MySQL номер подстановочного знака - PullRequest
0 голосов
/ 14 марта 2012

В настоящее время у меня есть таблица в базе данных mysql с четырьмя столбцами: State, City, Latitude, Longitude. Мои столбцы широты и долготы имеют тип float (10,6). Я ищу реализацию MySQL Query, где я могу искать похожие записи широты и долготы. Например, я хочу реализовать что-то вроде этого:

SELECT * FROM `mytable` WHERE `Latitude` LIKE '41.wxyz' and 'Longitude' LIKE '-87.wxyz'

где wxyz может быть любой цифрой. Я хочу сделать это, чтобы я мог вернуть все города в непосредственной близости от любых заданных произвольных координат. кто-нибудь может мне помочь?

РЕШЕНИЕ / UPDATE Мне не удалось заставить мое приложение делать то, что я хотел, с ответами, представленными ниже! хотя я ценю вклад каждого; Я смог расширить свои знания SQL-запросов. Чтобы подать заявку на поиск близлежащих мест по паре широты и долготы, я использовал формулу Хаверсайна. Как подробно в этой статье Google Maps. https://developers.google.com/maps/articles/phpsqlsearch

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;

где lat и lng - столбцы в таблице MySQL. а 37 и -122 - это координаты, по которым вы хотите найти другие близлежащие координаты в вашей таблице. :)

Ответы [ 2 ]

2 голосов
/ 14 марта 2012

Вы можете использовать функцию ROUND , например, -

SELECT * FROM `mytable`
  WHERE ROUND(Latitude, 0) = 41 AND ROUND(Longitude, 0) = -87
2 голосов
/ 14 марта 2012

Вы также можете сделать это:

SELECT * FROM `mytable` WHERE (`Latitude` between 41.0 and 42.0) and ('Longitude' between -87.0 and -88.0)

Попробуйте это.

...