sql >> Databáze >  >> RDS >> PostgreSQL

Jak mohu udělat tento geo-vzdálený SQL dotaz Postgres kompatibilní

Dotaz používá syntaxi specifickou pro MySql. V Postgresu (a ve všech ostatních mně známých RDBMS) byste měli použít odvozenou tabulku:

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

Také jsem odstranil uvozovky z číselných konstant.



  1. Group_Concat v Concat nefunguje s hodnotami NULL

  2. Jak zabránit mysqldump v rozdělení výpisů na 1MB přírůstky?

  3. Hromadné vkládání s textovým kvalifikátorem na SQL Server

  4. Rozdíl mezi klauzulemi ON a WHERE ve spojeních tabulek SQL