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

MySQL tính toán khoảng cách (giải pháp đơn giản)

Bạn không thể tham chiếu bí danh trong mệnh đề select từ một phần khác của câu lệnh sql. Bạn cần đặt toàn bộ biểu thức trong mệnh đề where:

WHERE
    ROUND( SQRT( POW( ( (69.1/1.61) * ('52.64' - latitude)), 2)
        + POW(( (53/1.61) * ('6.88' - longitude)), 2)), 1) < 10

Một giải pháp rõ ràng hơn sẽ là sử dụng một truy vấn phụ để tạo dữ liệu được tính toán:

  SELECT *, distance
    FROM (
       SELECT *,
           ROUND( SQRT( POW( ( (69.1/1.61) * ('52.64' - latitude)), 2)
               + POW(( (53/1.61) * ('6.88' - longitude)), 2)), 1) AS distance
           FROM lp_relations_addresses
       ) d
   WHERE d.distance < 10
ORDER BY d.distance DESC

Bản trình diễn: http://www.sqlize.com/q96p2mCwnJ



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách chèn giá trị trong bảng có cột động Jdbc / Mysql

  2. Tại sao mysql gặp lỗi ER_TABLE_NOT_LOCKED trong khi tôi vừa khóa bảng?

  3. Thực thi một thủ tục được lưu trữ với con trỏ trong PHP

  4. Tìm người dùng trong Laravel theo tên người dùng

  5. Chọn Nhiều Id từ một bảng