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

MySQL में सबक्वेरी और NOT IN से विशिष्ट मान न रखने वाले रिकॉर्ड खोजें

एक कॉलम में विशिष्ट मान नहीं रखने वाले रिकॉर्ड खोजने के लिए सबक्वेरी के साथ NOT IN का उपयोग करें।

टेबल बनाएं

mysql> CREATE TABLE DemoTable1840 (
    UserName VARCHAR(20),
    UserType ENUM('GUEST','ADMIN')
);

डेटा डालें

mysql> INSERT INTO DemoTable1840 VALUES('Chris','Admin');
mysql> INSERT INTO DemoTable1840 VALUES('David','Guest');
mysql> INSERT INTO DemoTable1840 VALUES('Chris','Guest');

डेटा देखें

+----------+----------+
| UserName | UserType |
+----------+----------+
| Chris    | ADMIN    |
| David    | GUEST    |
| Chris    | GUEST    |
+----------+----------+

Admin न होने वाले यूजर खोजें

mysql> SELECT UserName FROM DemoTable1840
    WHERE UserName NOT IN (
        SELECT UserName FROM DemoTable1840 WHERE UserType = 'Admin'
    );

आउटपुट:

+----------+
| UserName |
+----------+
| David    |
+----------+

व्याख्या

  • सबक्वेरी: 'Chris' लौटाती है (क्योंकि Chris का Admin रिकॉर्ड है)।
  • मुख्य क्वेरी: Chris को छोड़कर बाकी नाम चुनती है → David।

बेहतर विकल्प: NOT EXISTS

mysql> SELECT UserName FROM DemoTable1840 t1
    WHERE NOT EXISTS (
        SELECT 1 FROM DemoTable1840 t2
        WHERE t2.UserName = t1.UserName AND t2.UserType = 'Admin'
    );

क्यों NOT EXISTS बेहतर?

  • NOT IN में सबक्वेरी NULL लौटाए तो कोई परिणाम नहीं मिलता।
  • NOT EXISTS NULL-सुरक्षित है और अक्सर तेज़ होता है।
  • बड़ी टेबल पर LEFT JOIN ... WHERE t2.id IS NULL भी अच्छा विकल्प।
  1. - MySQL में INSERT INTO SELECT UNION ALL से एक क्वेरी में दो टेबल में चयन और सम्मिलन

    MySQL में INSERT INTO ... SELECT ... UNION ALL ... SELECT का उपयोग करके एक ही क्वेरी में एक टेबल से डेटा चुनकर दूसरी टेबल में एकाधिक पंक्तियां डाल सकते हैं। उदाहरण 1. लक्ष्य टेबल बनाएं ); 2. स्रोत टेबल बनाएं INSERT INTO DemoTable2 VALUES(Chris); 3. एक क्वेरी में चयन और सम्मिलन SELECT Name, 98

  1. - MySQL में एक क्वेरी से दो कॉलम कैसे अपडेट करें?

    MySQL में एक ही UPDATE स्टेटमेंट में एकाधिक कॉलम अपडेट करने के लिए, SET क्लॉज़ में कॉलम को कॉमा से अलग करके सूचीबद्ध करें। यह एटॉमिक ऑपरेशन सुनिश्चित करता है और क्वेरी ओवरहेड कम करता है। उदाहरण: FirstName और LastName एक साथ अपडेट करना डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1909 ( Id

  1. - MySQL में IN() क्लॉज़ के साथ एक क्वेरी में रिकॉर्ड कैसे डिलीट करें?

    MySQL में एक ही क्वेरी में एकाधिक विशिष्ट रिकॉर्ड डिलीट करने के लिए, DELETE स्टेटमेंट के साथ IN() ऑपरेटर का उपयोग करें। यह एकाधिक DELETE स्टेटमेंट चलाने से अधिक कुशल और पठनीय है। उदाहरण: विशिष्ट StudentId वाले रिकॉर्ड डिलीट करना डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1922 ( StudentI