PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để làm cho truy vấn SQL có khoảng cách địa lý này tương thích với Postgres

Truy vấn sử dụng cú pháp cụ thể cho MySql. Trong Postgres (và tất cả các RDBMS khác mà tôi biết), bạn nên sử dụng một bảng dẫn xuất:

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

Tôi cũng đã xóa dấu ngoặc kép khỏi hằng số.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Biểu thức truy vấn Django cho các trường được tính toán yêu cầu điều kiện và truyền

  2. LISTEN / NOTIFY pgconnection gặp sự cố java?

  3. Làm cách nào để thêm cột trong bảng bằng cách sử dụng di chuyển laravel 5 mà không làm mất dữ liệu của nó?

  4. Làm thế nào để cài đặt postgres với NSIS với tất cả các tham số?

  5. Truy vấn theo tọa độ mất quá nhiều thời gian - các tùy chọn để tối ưu hóa?