किसी दिए गए कॉलम में न्यूनतम मान वाली पंक्ति को खोजने और चुनने के लिए SQL का उपयोग करने के तीन उदाहरण यहां दिए गए हैं।
उदाहरण अधिकांश प्रमुख RDBMS में काम करते हैं, जिनमें MySQL, MariaDB, PostgreSQL, SQLite, Oracle और SQL Server शामिल हैं।
नमूना डेटा
आइए निम्नलिखित डेटा से शुरू करें:
SELECT * FROM PetShow;
परिणाम:
+---------+-----------+---------+ | PetId | PetName | Score | |---------+-----------+---------| | 1 | Wag | 85 | | 2 | Scratch | 3 | | 3 | Tweet | 65 | | 4 | Bark | 8 | | 5 | Ruff | 15 | | 6 | Woof | 20 | +---------+-----------+---------+
विकल्प 1
उपरोक्त तालिका से न्यूनतम मान वाली पंक्ति का चयन करने के लिए हमारा पहला विकल्प यहां दिया गया है:
SELECT
PetId,
PetName,
Score
FROM PetShow
WHERE Score = ( SELECT MIN(Score) FROM PetShow );
परिणाम:
+---------+-----------+---------+ | PetId | PetName | Score | |---------+-----------+---------| | 2 | Scratch | 3 | +---------+-----------+---------+
यहां, हमने MIN()
. का उपयोग किया है न्यूनतम मान खोजने के लिए एक सबक्वेरी के भीतर कार्य करें, और पूरी पंक्ति को बाहरी क्वेरी के साथ लौटा दें।
जब न्यूनतम मान वाली एक से अधिक पंक्तियाँ हों
इस पद्धति का उपयोग करते हुए, यदि न्यूनतम मान वाली कई पंक्तियाँ हैं, तो वे सभी वापस आ जाती हैं।
मान लीजिए कि हम अपनी तालिका में मौजूदा न्यूनतम स्कोर के समान स्कोर के साथ एक और पंक्ति सम्मिलित करते हैं:
INSERT INTO PetShow VALUES (7, 'Punch', 3);
SELECT * FROM PetShow;
हमारी तालिका अब इस तरह दिखती है:
+---------+-----------+---------+ | PetId | PetName | Score | |---------+-----------+---------| | 1 | Wag | 85 | | 2 | Scratch | 3 | | 3 | Tweet | 65 | | 4 | Bark | 8 | | 5 | Ruff | 15 | | 6 | Woof | 20 | | 7 | Punch | 3 | +---------+-----------+---------+
हम देख सकते हैं कि स्क्रैच और पंच दोनों को 3 का निम्न स्कोर मिला है।
आइए उस कॉलम से न्यूनतम मान वापस करने के लिए पिछली क्वेरी को फिर से चलाएं:
SELECT
PetId,
PetName,
Score
FROM PetShow
WHERE Score = ( SELECT MIN(Score) FROM PetShow );
परिणाम:
+---------+-----------+---------+ | PetId | PetName | Score | |---------+-----------+---------| | 2 | Scratch | 3 | | 7 | Punch | 3 | +---------+-----------+---------+
न्यूनतम मान वाली दोनों पंक्तियाँ लौटा दी जाती हैं।
यदि आवश्यक हो तो हम परिणाम सेट को केवल एक पंक्ति तक सीमित कर सकते हैं। सटीक कोड इस्तेमाल किए जा रहे आरडीबीएमएस पर निर्भर करेगा।
LIMIT
क्लॉज का उपयोग RDBS जैसे PostgreSQL, MariaDB, MySQL और SQLite के साथ किया जा सकता है:
SELECT
PetId,
PetName,
Score
FROM PetShow
WHERE Score = ( SELECT MIN(Score) FROM PetShow )
ORDER BY PetId ASC
LIMIT 1;
परिणाम:
+-------+---------+-------+ | PetId | PetName | Score | +-------+---------+-------+ | 2 | Scratch | 3 | +-------+---------+-------+
SQL सर्वर में, हम TOP
का उपयोग कर सकते हैं खंड:
SELECT TOP 1
PetId,
PetName,
Score
FROM PetShow
WHERE Score = ( SELECT MIN(Score) FROM PetShow )
ORDER BY PetId ASC;
परिणाम:
+---------+-----------+---------+ | PetId | PetName | Score | |---------+-----------+---------| | 2 | Scratch | 3 | +---------+-----------+---------+
और Oracle डाटाबेस में, हम यह कर सकते हैं:
SELECT
PetId,
PetName,
Score
FROM PetShow
WHERE Score = ( SELECT MIN(Score) FROM PetShow )
ORDER BY PetId ASC
FETCH FIRST 1 ROW ONLY;
परिणाम:
+---------+-----------+---------+ | PetId | PetName | Score | |---------+-----------+---------| | 2 | Scratch | 3 | +---------+-----------+---------+
विकल्प 2
यदि हम केवल एक पंक्ति को वापस करना चाहते हैं, तो हम वास्तव में अधिकांश अन्य कोड को हटा सकते हैं और केवल आदेशित परिणामों में से पहली पंक्ति प्राप्त कर सकते हैं:
SELECT
PetId,
PetName,
Score
FROM PetShow
ORDER BY Score ASC
LIMIT 1;
परिणाम:
+-------+---------+-------+ | PetId | PetName | Score | +-------+---------+-------+ | 7 | Punch | 3 | +-------+---------+-------+
SQL सर्वर में:
SELECT TOP 1
PetId,
PetName,
Score
FROM PetShow
ORDER BY Score ASC;
परिणाम:
+---------+-----------+---------+ | PetId | PetName | Score | |---------+-----------+---------| | 2 | Scratch | 3 | +---------+-----------+---------+
और Oracle डाटाबेस में:
SELECT
PetId,
PetName,
Score
FROM PetShow
ORDER BY Score ASC
FETCH FIRST 1 ROW ONLY;
परिणाम:
+---------+-----------+---------+ | PetId | PetName | Score | |---------+-----------+---------| | 2 | Scratch | 3 | +---------+-----------+---------+
विकल्प 3
न्यूनतम मान वाली पंक्ति का चयन करने का एक और तरीका है कि आप स्वयं तालिका में शामिल हों, इस तरह:
SELECT
p1.PetId,
p1.PetName,
p1.Score
FROM PetShow p1
LEFT JOIN PetShow p2 ON p1.Score < p2.Score
WHERE p2.PetId IS NULL;
परिणाम:
+---------+-----------+---------+ | PetId | PetName | Score | |---------+-----------+---------| | 1 | Wag | 85 | | 8 | Purr | 85 | +---------+-----------+---------+
पिछले उदाहरण की तरह, यदि आवश्यक हो तो हम परिणामों को एक पंक्ति (या किसी अन्य संख्या) तक सीमित कर सकते हैं।