MySQL में किसी दिए गए मान के बराबर या उससे निकटतम बड़ी संख्या को टेबल से चुनने के लिए, ABS() फंक्शन और ORDER BY के साथ LIMIT का उपयोग करें।
पहले एक टेबल बनाते हैं:
mysql> create table DemoTable (
-> Value INT
-> );
Query OK, 0 rows affected (1.33 sec)
रिकॉर्ड इन्सर्ट करें:
mysql> insert into DemoTable values(25); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable values(75); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable values(100); Query OK, 1 row affected (0.13 sec)
सभी रिकॉर्ड देखें:
mysql> select * from DemoTable;
+-------+ | Value | +-------+ | 25 | | 75 | | 100 | +-------+ 3 rows in set (0.00 sec)
मान लीजिए हमें 50 के बराबर या निकटतम बड़ी संख्या चाहिए। क्वेरी:
mysql> select * from DemoTable
-> ORDER BY ABS(Value - 50), Value DESC
-> LIMIT 1;
परिणाम:
+-------+ | Value | +-------+ | 75 | +-------+ 1 row in set (0.00 sec)
व्याख्या
- ABS(Value - 50) - प्रत्येक मान और लक्ष्य मान (50) के बीच का निरपेक्ष अंतर निकालता है।
- ORDER BY ABS(Value - 50), Value DESC - पहले अंतर के आरोही क्रम में, फिर मान के अवरोही क्रम में सॉर्ट करता है।
- LIMIT 1 - केवल पहला रिकॉर्ड लौटाता है।
इस उदाहरण में:
| Value | ABS(Value-50) |
|---|---|
| 25 | 25 |
| 75 | 25 |
| 100 | 50 |
25 और 75 दोनों का अंतर 25 है, लेकिन Value DESC के कारण 75 पहले आता है (क्योंकि यह 50 से बड़ा है)।
वैकल्पिक दृष्टिकोण
यदि आप केवल बड़ी या बराबर संख्या चाहते हैं (निकटतम नहीं):
SELECT * FROM DemoTable WHERE Value >= 50 ORDER BY Value ASC LIMIT 1;
यह 50 से बड़ी या बराबर सबसे छोटी संख्या देगा (इस मामले में 75)।