PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как мога да направя тази SQL заявка за гео-разстояние Postgres съвместима

Заявката използва синтаксиса, специфичен за MySql. В Postgres (и всички други известни на мен RDBMS) трябва да използвате производна таблица:

select *
from (
    select *, 
        (3959 * acos( cos( radians(53.49) ) * cos( radians( places.lat ) ) 
        * cos( radians( places.lng ) - radians(-2.38) ) 
        + sin( radians(53.49) ) * sin( radians( places.lat ) ) ) ) AS distance 
    from (
        select *
        from places
        where places.lat between 53.475527714192 and 53.504472285808
        and places.lng between -2.4043246788967 and -2.3556753211033
        ) as places 
    where places.deleted_at is null 
    ) sub
where distance <= $1 
order by distance asc

Също така премахнах кавички от числови константи.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да инсталирате PostgreSQL 12 на Ubuntu 20.04/18.04/16.04

  2. PostgreSQL Transaction Isolation READ UNCOMMITTED

  3. Присъединете четири таблици, включващи LEFT JOIN без дубликати

  4. postgresql - sql - брой "истински" стойности

  5. Псевдоним на функция за функцията по подразбиране на Postgres