Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में यूजर-डिफाइंड वेरिएबल मान के निकटतम रिकॉर्ड को कैसे खोजें

ABS() और ORDER BY के साथ निकटतम मान खोजना

एक यूजर-डिफाइंड वेरिएबल मान के निकटतम रिकॉर्ड को खोजने के लिए ABS() फंक्शन और ORDER BY ... LIMIT 1 का उपयोग करें।

आइए पहले एक टेबल बनाते हैं:

mysql> CREATE TABLE DemoTable (
    CustomerId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ProductAmount INT
);

रिकॉर्ड्स इन्सर्ट करें:

mysql> INSERT INTO DemoTable (ProductAmount) VALUES (5000);
mysql> INSERT INTO DemoTable (ProductAmount) VALUES (6000);
mysql> INSERT INTO DemoTable (ProductAmount) VALUES (7000);

सभी रिकॉर्ड्स देखें:

mysql> SELECT * FROM DemoTable;

आउटपुट:

+------------+---------------+
| CustomerId | ProductAmount |
+------------+---------------+
| 1          | 5000          |
| 2          | 6000          |
| 3          | 7000          |
+------------+---------------+

यूजर-डिफाइंड वेरिएबल 6990 सेट करें और निकटतम मान खोजें:

mysql> SET @value = 6990;
mysql> SELECT ProductAmount FROM DemoTable
    ORDER BY ABS(ProductAmount - @value) LIMIT 1;

आउटपुट:

+---------------+
| ProductAmount |
+---------------+
| 7000          |
+---------------+

व्याख्या:

  • SET @value = 6990: यूजर-डिफाइंड वेरिएबल में लक्ष्य मान सेट करता है
  • ABS(ProductAmount - @value): प्रत्येक रिकॉर्ड के मान और लक्ष्य मान के बीच निरपेक्ष अंतर निकालता है:
    • |5000 - 6990| = 1990
    • |6000 - 6990| = 990
    • |7000 - 6990| = 10
  • ORDER BY ... ASC: सबसे छोटे अंतर को पहले लाता है (डिफॉल्ट ASC)
  • LIMIT 1: केवल सबसे निकटतम मान लौटाता है (7000, अंतर 10)

उपयोग के मामले: निकटतम मूल्य खोज, निकटतम तारीख, निकटतम भौगोलिक स्थान (निर्देशांकों के साथ), फज़ी मैचिंग।

नोट: यदि दो मान समान दूरी पर हैं (जैसे 6980 और 7000, लक्ष्य 6990), तो जो पहले आता है वह लौटाया जाता है (ORDER BY में टाई-ब्रेकर नहीं है)।

  1. - MySQL फंक्शन से टेबल कैसे लौटाएं?

    MySQL फंक्शन से टेबल नहीं लौटा सकते। फंक्शन स्ट्रिंग, इंटीजर, चार आदि लौटा सकता है। MySQL से टेबल लौटाने के लिए स्टोर्ड प्रोसीजर का उपयोग करें, फंक्शन नहीं। उदाहरण टेबल बनाएं: mysql> create table DemoTable696 ( -> Id int, -> Name varchar(100) -> ); Query OK, 0 rows affected

  1. - MySQL में ऑटो-इन्क्रीमेंट मान को 1 से शुरू करने के लिए कैसे सेट करें

    TRUNCATE TABLE के साथ ऑटो-इन्क्रीमेंट रीसेट करना टेबल को ट्रंकेट करके ऑटो-इन्क्रीमेंट मान को 1 से पुनः आरंभ करें। आइए पहले एक टेबल बनाते हैं: mysql> CREATE TABLE DemoTable ( StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY ); रिकॉर्ड्स इन्सर्ट करें: mysql> INSERT INTO DemoTable VALUES ();

  1. - Python में MySQL का उपयोग करके टेबल से रिकॉर्ड डिलीट करना

    हमें कभी-कभी टेबल से कुछ पंक्तियों को डिलीट करने की आवश्यकता होती है। मान लीजिए, हमारे पास कक्षा में छात्रों के विवरण की एक टेबल है। यह संभव है कि छात्रों में से एक कक्षा छोड़कर चला गया हो और इसलिए, हमें उस विशेष छात्र के विवरण की आवश्यकता नहीं है। इसलिए, हमें उस विशेष पंक्ति या रिकॉर्ड को टेबल से ड