Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pilih nilai numerik terdekat dengan kueri MySQL

Salah satu opsi adalah sesuatu seperti:

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

Untuk memilih catatan acak, Anda dapat menambahkan , rand() ke order by ayat. Kerugian dari metode ini adalah Anda tidak mendapatkan manfaat apa pun dari indeks karena Anda harus mengurutkan berdasarkan nilai turunan distance_from_test .

Jika Anda memiliki indeks pada the_value dan Anda melonggarkan persyaratan Anda agar hasilnya acak dalam kasus ikatan, Anda dapat melakukan sepasang kueri rentang terbatas untuk memilih nilai pertama tepat di atas nilai pengujian dan nilai pertama tepat di bawah nilai pengujian dan memilih mana yang paling dekat ke nilai tes:

(
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. codeigniter mysql kiri gabung termasuk pilih

  2. kesalahan prosedur tersimpan mysql (1172, 'Hasil terdiri dari lebih dari satu baris')

  3. Cara termudah untuk mengubah array byte menjadi Blob di java

  4. Bagaimana cara menghentikan mysqld

  5. Pilih Beberapa Id dari tabel