MySQL में किसी ग्रुप या टेबल की पहली और आखिरी पंक्ति को छोड़कर मध्य की पंक्तियाँ प्राप्त करने के लिए, MIN() और MAX() के साथ सबक्वेरी का उपयोग करें। यह टाइम-सीरीज़ डेटा या क्रमबद्ध रिकॉर्ड्स के लिए उपयोगी है।
उदाहरण: पहली और आखिरी StudentId को छोड़कर
डेमो टेबल बनाएं:
mysql> CREATE TABLE DemoTable1917 (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentCode INT,
StudentMarks INT
);
डेटा इन्सर्ट करें (सभी StudentCode = 78):
mysql> INSERT INTO DemoTable1917 (StudentCode, StudentMarks) VALUES (78, 95), (78, 96), (78, 97), (78, 98), (78, 99);
सभी रिकॉर्ड्स:
+-----------+-------------+--------------+ | StudentId | StudentCode | StudentMarks | +-----------+-------------+--------------+ | 1 | 78 | 95 | | 2 | 78 | 96 | | 3 | 78 | 97 | | 4 | 78 | 98 | | 5 | 78 | 99 | +-----------+-------------+--------------+
पहली (Min) और आखिरी (Max) StudentId को छोड़कर क्वेरी:
mysql> SELECT * FROM DemoTable1917
WHERE StudentId NOT IN (
(SELECT MIN(StudentId) FROM DemoTable1917 WHERE StudentCode = 78),
(SELECT MAX(StudentId) FROM DemoTable1917 WHERE StudentCode = 78)
) AND StudentCode = 78;
आउटपुट (मध्य की 3 पंक्तियाँ):
+-----------+-------------+--------------+ | StudentId | StudentCode | StudentMarks | +-----------+-------------+--------------+ | 2 | 78 | 96 | | 3 | 78 | 97 | | 4 | 78 | 98 | +-----------+-------------+--------------+
MySQL 8.0+ में बेहतर विकल्प: विंडो फंक्शन
WITH Ranked AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY StudentCode ORDER BY StudentId) AS rn,
COUNT(*) OVER (PARTITION BY StudentCode) AS cnt
FROM DemoTable1917
WHERE StudentCode = 78
)
SELECT StudentId, StudentCode, StudentMarks
FROM Ranked
WHERE rn > 1 AND rn < cnt;
LIMIT/OFFSET दृष्टिकोण (सरल मामलों के लिए)
SELECT * FROM DemoTable1917 WHERE StudentCode = 78 ORDER BY StudentId LIMIT 18446744073709551615 OFFSET 1; -- पहली पंक्ति छोड़ें -- लेकिन आखिरी पंक्ति छोड़ने के लिए सबक्वेरी चाहिए
उपयोग के मामले
- ट्रेंड विश्लेषण के लिए एंडपॉइंट हटाना
- आउटलायर हटाना
- स्लाइडिंग विंडो गणना
सबक्वेरी दृष्टिकोण सभी MySQL संस्करणों पर काम करता है और स्पष्ट इरादा व्यक्त करता है।