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

MySQL में हर 2 पंक्तियाँ छोड़कर अगली पंक्ति कैसे चुनें?

MySQL में OFFSET और LIMIT का उपयोग करके वैकल्पिक पंक्तियाँ चुनना (हर 2 छोड़कर 1)

पंक्तियों को छोड़ने और विशिष्ट पैटर्न में चुनने के लिए OFFSET और LIMIT क्लॉज का संयोजन उपयोग करें।

उदाहरण के साथ पूर्ण कार्यान्वयन

टेबल बनाना

mysql> CREATE TABLE DemoTable617 (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    FirstName VARCHAR(100)
);

रिकॉर्ड डालना

mysql> INSERT INTO DemoTable617(FirstName) VALUES
('John'), ('Sam'), ('Carol'), ('Mike'), ('David'), ('Bob'), ('Robert'), ('Chris'), ('Mike'), ('Adam');

सभी रिकॉर्ड देखना

mysql> SELECT * FROM DemoTable617;

आउटपुट:

+----+-----------+
| Id | FirstName |
+----+-----------+
| 1  | John      |
| 2  | Sam       |
| 3  | Carol     |
| 4  | Mike      |
| 5  | David     |
| 6  | Bob       |
| 7  | Robert    |
| 8  | Chris     |
| 9  | Mike      |
| 10 | Adam      |
+----+-----------+
10 rows in set (0.00 sec)

पहले नाम के अनुसार अवरोही क्रम, 2 छोड़कर 5 चुनना

mysql> SELECT tbl.* FROM (
    SELECT * FROM DemoTable617 
    ORDER BY FirstName DESC 
    LIMIT 5 OFFSET 2
) AS tbl 
ORDER BY tbl.Id;

आउटपुट:

+----+-----------+
| Id | FirstName |
+----+-----------+
| 1  | John      |
| 4  | Mike      |
| 5  | David     |
| 8  | Chris     |
| 9  | Mike      |
+----+-----------+
5 rows in set (0.00 sec)

चरण-दर-चरण:

  1. आंतरिक क्वेरी: ORDER BY FirstName DESC → Sam, Robert, Mike, Mike, John, David, Chris, Carol, Bob, Adam
  2. OFFSET 2: पहले 2 छोड़ें (Sam, Robert)
  3. LIMIT 5: अगले 5 लें (Mike, Mike, John, David, Chris)
  4. बाहरी ORDER BY Id: मूल ID क्रम में (1, 4, 5, 8, 9)

हर Nवीं पंक्ति चुनने का पैटर्न (MOD का उपयोग करके)

-- हर 3रीं पंक्ति (3, 6, 9, ...)
SELECT * FROM DemoTable617 WHERE Id % 3 = 0;

-- हर 2रीं पंक्ति (सम ID)
SELECT * FROM DemoTable617 WHERE Id % 2 = 0;

-- विषम ID (1, 3, 5, ...)
SELECT * FROM DemoTable617 WHERE Id % 2 = 1;

ROW_NUMBER() के साथ (MySQL 8.0+)

SELECT * FROM (
    SELECT *, ROW_NUMBER() OVER (ORDER BY Id) AS rn
    FROM DemoTable617
) t
WHERE rn % 3 = 1;  -- हर 3रीं पंक्ति (1, 4, 7, ...)

नमूना चयन (Bernoulli sampling)

-- लगभग 30% यादृच्छिक नमूना
SELECT * FROM DemoTable617 WHERE RAND() < 0.3;

नोट: मूल क्वेरी "हर 2 छोड़कर 1" पैटर्न के बजाय एक बार OFFSET/LIMIT करती है। वास्तविक "हर 2 छोड़कर 1" के लिए MOD/ROW_NUMBER दृष्टिकोण बेहतर है।

  1. - MySQL ट्रिगर में 'FOR EACH ROW' कैसे काम करता है?

    वास्तव में FOR EACH ROW का मतलब उन मेल खाने वाली प्रत्येक पंक्ति के लिए है जो या तो अपडेट या डिलीट होती है। दूसरे शब्दों में, हम कह सकते हैं कि ट्रिगर प्रत्येक पंक्ति पर लागू नहीं होता, यह सिर्फ ट्रिगर बॉडी को प्रत्येक प्रभावित टेबल पंक्ति के लिए निष्पादित करने के लिए कहता है। हम इसे निम्न उदाहरण स

  1. - MySQL में अगला ऑटो-इन्क्रीमेंट ID कैसे प्राप्त करें?

    MySQL में ऑटो-इन्क्रीमेंट करने के लिए AUTO_INCREMENT कीवर्ड होता है। AUTO_INCREMENT के लिए शुरुआती वैल्यू 1 होती है, जो डिफ़ॉल्ट है। यह प्रत्येक नए रिकॉर्ड के लिए 1 से इन्क्रीमेंट होता है। MySQL में अगला ऑटो इन्क्रीमेंट ID प्राप्त करने के लिए, हम MySQL से last_insert_id() फंक्शन या SELECT के साथ a

  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) टेबल में रिकॉर