Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL क्वेरी के साथ निकटतम संख्यात्मक मान चुनें

एक विकल्प कुछ इस तरह होगा:

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

एक यादृच्छिक रिकॉर्ड का चयन करने के लिए, आप , rand() add जोड़ सकते हैं order by खंड। इस पद्धति का नुकसान यह है कि आपको सूचकांकों से कोई लाभ नहीं मिलता है क्योंकि आपको व्युत्पन्न मान distance_from_test पर सॉर्ट करना होता है ।

यदि आपके पास the_value . पर एक अनुक्रमणिका है और आप संबंधों के मामले में परिणाम यादृच्छिक होने के लिए अपनी आवश्यकता को आराम देते हैं, आप परीक्षण मूल्य के ठीक ऊपर पहले मान का चयन करने के लिए सीमित श्रेणी के प्रश्नों की एक जोड़ी कर सकते हैं और परीक्षण मूल्य के ठीक नीचे पहले मान का चयन कर सकते हैं और जो भी निकटतम है उसे चुन सकते हैं परीक्षण मूल्य के लिए:

(
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. MySQL में InnoDB और MyISAM क्या है?

  2. मैं अल्पविराम से अलग किए गए मानों की तालिका में कैसे खोज सकता हूं?

  3. मैं एक InnoDB पंक्ति को कैसे लॉक करूं जो अभी तक मौजूद नहीं है?

  4. कई-से-अनेक संबंध उदाहरण

  5. mysql और mysqli . के बीच अंतर