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

MySQL टेबल में कॉलम से केवल कुछ पंक्तियाँ चुनना और प्रदर्शित करना

MySQL में NOT IN उपक्वेरी का उपयोग करके विशिष्ट शर्त न पूरी करने वाली पंक्तियाँ चुनना

एक शर्त को पूरा न करने वाली पंक्तियों को चुनने के लिए NOT IN के साथ उपक्वेरी (सबक्वेरी) का उपयोग करें।

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

टेबल बनाना

mysql> CREATE TABLE DemoTable625 (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentFirstName VARCHAR(100),
    StudentScore INT
);

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

mysql> INSERT INTO DemoTable625(StudentFirstName, StudentScore) VALUES
('John', 98), ('Chris', 39), ('Bob', 41), ('David', 40), ('Robert', 52);

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

mysql> SELECT * FROM DemoTable625;

आउटपुट:

+-----------+------------------+--------------+
| StudentId | StudentFirstName | StudentScore |
+-----------+------------------+--------------+
| 1         | John             | 98           |
| 2         | Chris            | 39           |
| 3         | Bob              | 41           |
| 4         | David            | 40           |
| 5         | Robert           | 52           |
+-----------+------------------+--------------+
5 rows in set (0.00 sec)

स्कोर 50 से कम वाले छात्रों को छोड़कर बाकी चुनना

mysql> SELECT * FROM DemoTable625 
WHERE StudentFirstName NOT IN (
    SELECT StudentFirstName FROM DemoTable625 
    WHERE StudentScore < 50
);

आउटपुट:

+-----------+------------------+--------------+
| StudentId | StudentFirstName | StudentScore |
+-----------+------------------+--------------+
| 1         | John             | 98           |
| 5         | Robert           | 52           |
+-----------+------------------+--------------+
2 rows in set (0.00 sec)

कैसे काम करता है:

  1. उपक्वेरी: StudentScore < 50 वाले नाम लौटाती है → {'Chris', 'Bob', 'David'}
  2. मुख्य क्वेरी: उन नामों को नहीं रखने वाली पंक्तियाँ चुनती है → John (98), Robert (52)

समान परिणाम के लिए सरल विकल्प

-- सीधी शर्त (अधिक कुशल)
SELECT * FROM DemoTable625 WHERE StudentScore >= 50;

-- NOT EXISTS (NULL-सुरक्षित)
SELECT * FROM DemoTable625 d1
WHERE NOT EXISTS (
    SELECT 1 FROM DemoTable625 d2 
    WHERE d2.StudentFirstName = d1.StudentFirstName 
    AND d2.StudentScore < 50
);

NOT IN के साथ NULL समस्या

-- यदि उपक्वेरी NULL लौटाती है, तो NOT IN कुछ नहीं लौटाता!
SELECT * FROM DemoTable625 
WHERE StudentFirstName NOT IN (SELECT NULL);  -- खाली परिणाम

समाधान: NOT EXISTS उपयोग करें या उपक्वेरी में WHERE column IS NOT NULL जोड़ें।

अन्य "कुछ पंक्तियाँ" पैटर्न

टॉप N प्रति ग्रुप
-- प्रत्येक विभाग के शीर्ष 2 वेतन
SELECT * FROM (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY dept ORDER BY salary DESC) AS rn
    FROM employees
) t WHERE rn <= 2;
यादृच्छिक नमूना
SELECT * FROM DemoTable625 ORDER BY RAND() LIMIT 3;
पहली/अंतिम N पंक्तियाँ
SELECT * FROM DemoTable625 ORDER BY StudentId LIMIT 2;      -- पहली 2
SELECT * FROM DemoTable625 ORDER BY StudentId DESC LIMIT 2;  -- अंतिम 2
पेजिनेशन
SELECT * FROM DemoTable625 ORDER BY StudentId LIMIT 2 OFFSET 2;  -- पृष्ठ 2 (आकार 2)
  1. - MySQL में शर्त के आधार पर केवल कुछ पंक्तियां कैसे हटाएं?

    MySQL में DELETE स्टेटमेंट के WHERE क्लॉज का उपयोग करके शर्त के आधार पर केवल विशिष्ट पंक्तियों को हटाया जा सकता है। सिंटैक्स DELETE FROM table_name WHERE condition; उदाहरण तालिका बनाएं: mysql> CREATE TABLE DemoTable (Id INT, Name VARCHAR(20)); mysql> INSERT INTO DemoTable VALUES (100, Bob),

  1. - MySQL में NULL और NOT NULL रिकॉर्ड वाले कॉलम से केवल NOT NULL मान प्रदर्शित करें

    इसके लिए आप IS NOT NULL प्रॉपर्टी का उपयोग कर सकते हैं। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable1 ( DueDate date ); Query OK, 0 rows affected (0.00 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable1 values(2019-09-10); Query OK, 1 r

  1. - MySQL में NOT IN का उपयोग करके केवल विशिष्ट पंक्तियाँ हटाएं

    MySQL में DELETE स्टेटमेंट के साथ NOT IN ऑपरेटर का उपयोग करके आप उन पंक्तियों को हटा सकते हैं जो दी गई सूची में नहीं हैं। यह विशिष्ट रिकॉर्ड रखते हुए बाकी हटाने के लिए उपयोगी है। टेबल बनाएं और डेटा डालें mysql> CREATE TABLE DemoTable1830 ( StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,