Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में पहली और आखिरी पंक्ति को छोड़कर सभी पंक्तियाँ कैसे प्राप्त करें?

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 संस्करणों पर काम करता है और स्पष्ट इरादा व्यक्त करता है।

  1. - MySQL टेबल से सभी पंक्तियां कैसे हटाएं?

    हम टेबल से सभी पंक्तियों को हटाने के लिए या तो TRUNCATE स्टेटमेंट या DROP स्टेटमेंट का उपयोग कर सकते हैं। यह DELETE स्टेटमेंट की मदद से भी किया जा सकता है लेकिन उस मामले में WHERE क्लॉज को टेबल की सभी पंक्तियों की पहचान करनी होगी। जैसा कि हम जानते हैं कि TRUNCATE और DELETE स्टेटमेंट दोनों टेबल की स

  1. MySQL से अंतिम 10 रो कैसे चुनें? MySQL से अंतिम 10 रो कैसे चुनें?

    MySQL से अंतिम 10 रो चुनने के लिए, हम SELECT स्टेटमेंट और LIMIT कॉन्सेप्ट के साथ सबक्वेरी का उपयोग कर सकते हैं। निम्न एक उदाहरण है। टेबल बनाना। mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected (0.75 sec) टेबल में रिकॉर

  1. - Java प्रोग्राम: ArrayList से पहला और अंतिम एलिमेंट प्राप्त करना

    इस लेख में हम समझेंगे कि Java में ArrayList से पहला और अंतिम एलिमेंट कैसे प्राप्त किया जाता है। लिस्ट एक क्रमबद्ध संग्रह है जो हमें एलिमेंट्स को क्रमिक रूप से स्टोर और एक्सेस करने की अनुमति देता है। उदाहरण इनपुट: Input list: [40, 60, 150, 300] आउटपुट: The first element is : 40 The last element is