Во-первых у меня есть одни и те же имена таблиц, столбцы и данные в обеих базах данных (MySQL и Postgres) запрос, который я использую для MySQL 5.6.24, который работает это следующийКак я могу преобразовать этот запрос MySQL в Postgres 9.4
select *,abs(longitudes - -81.4563009)+abs(latitudes-28.11657) as LowestNum
from zips group by LowestNum limit 1
Я в основном пытаюсь получить ближайшее место заданного широты и долготу, когда я ставлю тот же запрос в Postgres 9.4 Я получаю сообщение об ошибке, которое утверждает
ERROR: column "zips.zip" must appear in the GROUP BY clause or be used in an aggregate function
SQL state: 42803
Character: 8
я изменить вещи вокруг и сделать это
select *, abs(longitudes - -81.3952524)+abs(latitudes-28.4583868) as
LowestNum from zips group by LowestNum,zips.zip limit 1
и я получаю эту ошибку
ERROR: column "zips.ziptype" must appear in the GROUP BY clause or be used in an aggregate function
SQL state: 42803
Character: 8
Я новичок в Postgres, но смотрел на документации и поиска вокруг и ничего не работает какие-либо предложения.
Вы хотите наименьшее число (lowerNum) по почтовому индексу? –
Я хочу, чтобы lowerNum по широте и долготе в последнем запросе ставил zips.zip, потому что эта ошибка появилась для этого столбца. – user1591668
Вам понадобится 'min (LowestNum)' или 'order by LowestNum limit 1', чтобы сообщить PostgreSQL, что вы хотите получить самое низкое значение. Кроме того, вы должны взглянуть на тутораль, который охватывает совокупные функции, такие как 'min' в PostgreSQL: http://www.postgresql.org/docs/9.3/static/tutorial-agg.html – hagello