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

Chọn giá trị số gần nhất với truy vấn MySQL

Một tùy chọn sẽ là một cái gì đó dọc theo dòng:

select   the_value,
         abs(the_value - 14) as distance_from_test
from     the_table
order by distance_from_test
limit 1

Để chọn một bản ghi ngẫu nhiên, bạn có thể thêm , rand() đến order by mệnh đề. Nhược điểm của phương pháp này là bạn không nhận được bất kỳ lợi ích nào từ các chỉ số vì bạn phải sắp xếp trên giá trị bắt nguồn distance_from_test .

Nếu bạn có chỉ mục trên the_value và bạn nới lỏng yêu cầu của mình để kết quả là ngẫu nhiên trong trường hợp ràng buộc, bạn có thể thực hiện một cặp truy vấn trong phạm vi giới hạn để chọn giá trị đầu tiên ngay trên giá trị thử nghiệm và giá trị đầu tiên ngay bên dưới giá trị thử nghiệm và chọn giá trị nào gần nhất đến giá trị thử nghiệm:

(
select   the_value
from     the_table
where    the_value >= 14
order by the_value asc
limit 1
)
union
(
select   the_value
from     the_table
where    the_value < 14
order by the_value desc
limit 1
)
order by abs(the_value - 14)
limit 1


  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 hủy kết nối MySQL

  2. Sắp xếp chuỗi truy vấn không gian địa lý:tìm n điểm gần nhất với một vị trí

  3. Xuất tệp Excel bằng PHP sau khi echo

  4. phòng truy vấn mysql còn trống

  5. Nhận kết quả truy vấn SQL mà không có định dạng bảng