MySQL में MIN() एग्रीगेट फंक्शन और सबक्वेरी से न्यूनतम मान वाली पूरी रो प्राप्त करना
सिंटैक्स:
SELECT * FROM yourTableName
WHERE yourColumnName = (SELECT MIN(yourColumnName) FROM yourTableName);
व्यावहारिक उदाहरण
1. टेबल बनाएं:
mysql> CREATE TABLE MinValueDemo (
-> ProductId INT,
-> ProductName VARCHAR(100),
-> ProductPrice INT
-> );
Query OK, 0 rows affected (0.77 sec)
2. उत्पाद डेटा डालें:
mysql> INSERT INTO MinValueDemo VALUES(1,'product-1',4500);
mysql> INSERT INTO MinValueDemo VALUES(2,'product-2',4340);
mysql> INSERT INTO MinValueDemo VALUES(3,'product-3',4110);
mysql> INSERT INTO MinValueDemo VALUES(4,'product-4',4344);
mysql> INSERT INTO MinValueDemo VALUES(5,'product-5',4103);
3. सभी रिकॉर्ड:
+-----------+-------------+--------------+
| ProductId | ProductName | ProductPrice |
+-----------+-------------+--------------+
| 1 | product-1 | 4500 |
| 2 | product-2 | 4340 |
| 3 | product-3 | 4110 |
| 4 | product-4 | 4344 |
| 5 | product-5 | 4103 |
+-----------+-------------+--------------+
5 rows in set (0.00 sec)
4. न्यूनतम कीमत वाला उत्पाद खोजें:
mysql> SELECT * FROM MinValueDemo
-> WHERE ProductPrice = (SELECT MIN(ProductPrice) FROM MinValueDemo);
+-----------+-------------+--------------+
| ProductId | ProductName | ProductPrice |
+-----------+-------------+--------------+
| 5 | product-5 | 4103 |
+-----------+-------------+--------------+
1 row in set (0.08 sec)
वैकल्पिक तरीके:
तरीका 2: ORDER BY LIMIT 1 (सरल, पूरी रो देता है):
SELECT * FROM MinValueDemo ORDER BY ProductPrice ASC LIMIT 1;
तरीका 3: JOIN के साथ (बड़े टेबल के लिए बेहतर प्रदर्शन):
SELECT m.* FROM MinValueDemo m
JOIN (SELECT MIN(ProductPrice) AS min_price FROM MinValueDemo) sub
ON m.ProductPrice = sub.min_price;
तरीका 4: केवल न्यूनतम मान चाहिए:
SELECT MIN(ProductPrice) FROM MinValueDemo;
तुलना:
| तरीका | फायदे | नुकसान |
| सबक्वेरी WHERE = | मानक SQL, स्पष्ट इरादा | दो बार स्कैन हो सकता है |
| ORDER BY LIMIT 1 | सरल, इंडेक्स उपयोग कर सकता है | टाई होने पर केवल एक रो |
| JOIN | बड़े टेबल पर बेहतर प्रदर्शन | अधिक वर्बोज |
नोट:
- अगर न्यूनतम मान वाली एकाधिक पंक्तियां हैं, तो सभी लौटाई जाएंगी
MIN() NULL मानों को अनदेखा करता है
- इंडेक्स होने पर
ORDER BY LIMIT 1 सबसे तेज होता है