sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur kan jag göra denna geodistans SQL-fråga Postgres-kompatibel

Frågan använder syntaxen som är specifik för MySql. I Postgres (och alla andra för mig kända RDBMS) bör du använda en härledd tabell:

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

Jag har också tagit bort citat från numeriska konstanter.



  1. Varför skulle Magento misslyckas med att rädda en kund efter att ha genererat ett ID?

  2. MySQL LOAD DATA LOCAL INFILE exempel i python?

  3. på varandra följande dagar i sql

  4. Det går inte att installera MySQL på Mac OS X