यहां तीन उदाहरण दिए गए हैं जो किसी दिए गए कॉलम में अधिकतम मान वाली पंक्ति को खोजने और चुनने के लिए 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 | | 7 | Punch | 3 | +---------+-----------+---------+
विकल्प 1
Score
. से अधिकतम मान वाली पंक्ति का चयन करने का एक उदाहरण यहां दिया गया है उपरोक्त तालिका में कॉलम:
SELECT
PetId,
PetName,
Score
FROM PetShow
WHERE Score = ( SELECT MAX(Score) FROM PetShow );
परिणाम:
+---------+-----------+---------+ | PetId | PetName | Score | |---------+-----------+---------| | 1 | Wag | 85 | +---------+-----------+---------+
हमने MAX()
. का इस्तेमाल किया अधिकतम मूल्य खोजने के लिए एक सबक्वेरी के भीतर कार्य करें, और पूरी पंक्ति को बाहरी क्वेरी के साथ लौटा दें।
जब अधिकतम मान वाली एक से अधिक पंक्तियाँ हों
इस पद्धति का उपयोग करते हुए, यदि अधिकतम मान वाली एक से अधिक पंक्तियाँ हैं, तो वे सभी वापस आ जाती हैं।
मान लीजिए कि हम अपनी तालिका में मौजूदा अधिकतम स्कोर के समान स्कोर के साथ एक और पंक्ति सम्मिलित करते हैं:
INSERT INTO PetShow VALUES (8, 'Purr', 85);
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 | | 8 | Purr | 85 | +---------+-----------+---------+
हम देख सकते हैं कि वाग और पूर दोनों ने उच्चतम स्कोर 85 प्राप्त किया है।
आइए उस कॉलम से अधिकतम मान वापस करने के लिए पिछली क्वेरी को फिर से चलाएं:
SELECT
PetId,
PetName,
Score
FROM PetShow
WHERE Score = ( SELECT MAX(Score) FROM PetShow );
परिणाम:
+---------+-----------+---------+ | PetId | PetName | Score | |---------+-----------+---------| | 1 | Wag | 85 | | 8 | Purr | 85 | +---------+-----------+---------+
अधिकतम मान वाली दोनों पंक्तियों को अपेक्षित के रूप में लौटाया जाता है।
यदि आवश्यक हो तो हम परिणाम सेट को केवल एक पंक्ति तक सीमित कर सकते हैं। सटीक कोड इस्तेमाल किए जा रहे आरडीबीएमएस पर निर्भर करेगा।
LIMIT
क्लॉज का उपयोग RDBS जैसे PostgreSQL, MariaDB, MySQL और SQLite के साथ किया जा सकता है:
SELECT
PetId,
PetName,
Score
FROM PetShow
WHERE Score = ( SELECT MAX(Score) FROM PetShow )
ORDER BY PetId ASC
LIMIT 1;
परिणाम:
+-------+---------+-------+ | PetId | PetName | Score | +-------+---------+-------+ | 1 | Wag | 85 | +-------+---------+-------+
SQL सर्वर में, हम TOP
का उपयोग कर सकते हैं खंड:
SELECT TOP 1
PetId,
PetName,
Score
FROM PetShow
WHERE Score = ( SELECT MAX(Score) FROM PetShow )
ORDER BY PetId ASC;
परिणाम:
+-------+---------+-------+ | PetId | PetName | Score | +-------+---------+-------+ | 1 | Wag | 85 | +-------+---------+-------+
और Oracle डाटाबेस में:
SELECT
PetId,
PetName,
Score
FROM PetShow
WHERE Score = ( SELECT MAX(Score) FROM PetShow )
ORDER BY PetId ASC
FETCH FIRST 1 ROW ONLY;
परिणाम:
+-------+---------+-------+ | PetId | PetName | Score | +-------+---------+-------+ | 1 | Wag | 85 | +-------+---------+-------+
विकल्प 2
यदि हम केवल एक पंक्ति को वापस करना चाहते हैं, तो हम वास्तव में अधिकांश अन्य कोड को हटा सकते हैं और केवल आदेशित परिणामों में से पहली पंक्ति प्राप्त कर सकते हैं:
SELECT
PetId,
PetName,
Score
FROM PetShow
ORDER BY Score DESC
LIMIT 1;
परिणाम:
+---------+-----------+---------+ | PetId | PetName | Score | |---------+-----------+---------| | 1 | Wag | 85 | +---------+-----------+---------+
SQL सर्वर में:
SELECT TOP 1
PetId,
PetName,
Score
FROM PetShow
ORDER BY Score DESC;
परिणाम:
+---------+-----------+---------+ | PetId | PetName | Score | |---------+-----------+---------| | 1 | Wag | 85 | +---------+-----------+---------+
और Oracle डाटाबेस में:
SELECT
PetId,
PetName,
Score
FROM PetShow
ORDER BY Score DESC
FETCH FIRST 1 ROW ONLY;
परिणाम:
+---------+-----------+---------+ | PetId | PetName | Score | |---------+-----------+---------| | 1 | Wag | 85 | +---------+-----------+---------+
विकल्प 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 | +---------+-----------+---------+
पिछले उदाहरण की तरह, यदि आवश्यक हो तो हम परिणामों को एक पंक्ति (या किसी अन्य संख्या) तक सीमित कर सकते हैं।