एसक्यूएल में, हम शायद एक या एक से अधिक टेबल से संयुक्त परिणाम प्राप्त करने के लिए जॉइन क्लॉज का उपयोग करते हैं। लेकिन कभी-कभी, हम ऐसा परिणाम चाहते हैं जिसमें एक तालिका का डेटा हो, और रिकॉर्ड दूसरी तालिका में उपलब्ध नहीं होना चाहिए। उस स्थिति में, SQL का कॉन्सेप्ट नाम SQL एक्सेप्ट है।
एक से अधिक टेबल से डेटा को शुद्ध करने के लिए, हमने SQL को छोड़कर उपयोग किया। SQL एक्सेप्ट वही है जो माइनस ऑपरेटर हम गणित में करते हैं। SQL को छोड़कर पहले क्वेरी में दो या दो से अधिक SELECT स्टेटमेंट को मर्ज करता है और पहले SELECT स्टेटमेंट से डेटा लौटाता है। हम किसी अन्य SELECT कथन परिणाम में उपलब्ध नहीं हैं।
नियमों को छोड़कर SQL
SQL में EXCEPT क्वेरी का उपयोग करने से पहले हमें सभी नियमों और विनियमों को समझना चाहिए:
- दी गई तालिका में कॉलम की संख्या और क्रम संपूर्ण SELECT क्वेरी में समान होना चाहिए।
- स्तंभ का डेटा प्रकार समान या संगत होना चाहिए।
SQL EXCEPT
. के लिए सिंटैक्सSELECT * FROM table1 EXCEPT SELECT * FROM table2;
टेबल 1 और टेबल 2 टेबल के नाम होंगे।
उदाहरण:
मान लें कि हमारे पास समान संख्या में स्तंभों और स्तंभों के क्रम वाली दो तालिकाएँ हैं।
- तालिका 1:T1, स्तंभों की संख्या:3, डेटा:A, B, C, D
- तालिका 2:T2, स्तंभों की संख्या:3, डेटा:B, D, F, G
जब भी हम इन दो तालिकाओं पर EXCEPT क्वेरी निष्पादित करते हैं, तो हमें A और C प्राप्त होंगे क्योंकि ये दोनों डेटा तालिका T2, B और D में मौजूद नहीं हैं, दोनों तालिकाओं में सामान्य हैं, जो छोड़ देते हैं।
आइए उदाहरणों के साथ SQL EXCEPT कॉन्सेप्ट को समझते हैं। दिए गए अभिलेखों के साथ निम्नलिखित तालिकाओं पर विचार करें।
तालिका1:Emp
कर्मचारी | FIRST_NAME | LAST_NAME | वेतन | शहर | विभाग | मैनेजरिड |
1001 | वैभवी | मिश्रा | 65000 | पुणे | ओरेकल | 1 |
1002 | वैभव | शर्मा | 60000 | नोएडा | ओरेकल | 1 |
1003 | निखिल | वाणी | 50000 | जयपुर | FMW | 2 |
2001 | प्राची | शर्मा | 55500 | चंडीगढ़ | ओरेकल | 1 |
2002 | भावेश | जैन | 65500 | पुणे | FMW | 2 |
2003 | रुचिका | जैन | 50000 | मुंबई | परीक्षण | 4 |
3001 | प्रानोटी | शेंडे | 55500 | पुणे | जावा | 3 |
3002 | अनुजा | कहां | 50500 | जयपुर | FMW | 2 |
3003 | दीपम | जौहारी | 58500 | मुंबई | जावा | 3 |
4001 | राजेश | GOUD | 60500 | मुंबई | परीक्षण | 4 |
तालिका2:कर्मचारी
कर्मचारी | FIRST_NAME | LAST_NAME | वेतन | शहर | विभाग | मैनेजरिड |
1001 | वैभव | शर्मा | 65000 | पुणे | ओरेकल | 1 |
1002 | निखिल | वाणी | 60000 | नोएडा | ओरेकल | 1 |
1003 | वैभवी | मिश्रा | 50000 | जयपुर | FMW | 2 |
2001 | रुचिका | जैन | 55500 | चंडीगढ़ | ओरेकल | 1 |
2002 | प्राची | शर्मा | 65500 | पुणे | FMW | 2 |
2003 | भावेश | जैन | 50000 | मुंबई | परीक्षण | 4 |
3001 | दीपम | जौहारी | 55500 | पुणे | जावा | 3 |
3002 | अनुजा | कहां | 50500 | जयपुर | FMW | 2 |
3003 | प्रनोती | शेंडे | 58500 | मुंबई | जावा | 3 |
4001 | राजेश | GOUD | 60500 | मुंबई | परीक्षण | 4 |
तालिका3:प्रबंधक
प्रबंधक | manager_name | प्रबंधक_विभाग |
1 | स्नेहदीप कौर | ओरेकल |
2 | कीर्ति कीर्तन | FMW |
3 | अभिषेक मनीष | जावा |
4 | अनुपम मिश्रा | परीक्षण |
तालिका4:प्रबंधक1
प्रबंधक | manager_name | प्रबंधक_विभाग |
1 | इशिता अग्रवाल | ओरेकल |
2 | कीर्ति कीर्तन | FMW |
3 | अभिषेक मनीष | जावा |
4 | पॉल ओकिप | परीक्षण |
उदाहरण 1: मान लीजिए कि हम EXCEPT ऑपरेटर का उपयोग करके उपरोक्त दो तालिकाओं Emp और Employee को हमारी SELECT क्वेरी में शामिल करना चाहते हैं।
SELECT EMPLOYEEID, CONCAT(FIRST_NAME, LAST_NAME) AS NAME, CITY, DEPARTMENT MANAGER1.MANAGERID, MANAGER1.MANAGER_NAME FROM EMPLOYEE INNER JOIN MANAGER ON EMP.MANAGERID = MANAGER.MANAGERID EXCEPT SELECT EMPLOYEEID, CONCAT(FIRST_NAME, LAST_NAME) AS NAME, CITY, DEPARTMENT, MANAGER1.MANAGERID, MANAGER1.MANAGER_NAME FROM EMPLOYEE INNER JOIN MANAGER1 ON EMPLOYEE.MANAGERID = MANAGER1.MANAGERID;
हम Emp और कर्मचारी तालिका के बीच INNER JOIN क्लॉज का उपयोग कर रहे हैं जहाँ हम EXCEPT ऑपरेटर का उपयोग करके कर्मचारी आईडी, नाम, शहर, विभाग, प्रबंधक आईडी और प्रबंधक का नाम प्रदर्शित करते हैं। उपरोक्त क्वेरी दोनों तालिकाओं के बीच केवल उन्हीं अद्वितीय मानों को प्रदर्शित करेगी।
उपरोक्त क्वेरी निम्न आउटपुट देती है:
यदि हम टेबल डेटा का निरीक्षण करते हैं, तो दोनों टेबल एम्प टेबल और कर्मचारी तालिका, यानी कर्मचारी आईडी 3002 और 4001 के बीच दो सामान्य डेटा हैं। कर्मचारी आईडी 4001 विवरण 3002 को छोड़कर प्रदर्शित होते हैं। क्योंकि कर्मचारी आईडी 3002 प्रबंधक का नाम दोनों तालिकाओं में समान है प्रबंधक और प्रबंधक1 लेकिन कर्मचारी आईडी 4001 प्रबंधक नाम दोनों तालिकाओं में भिन्न हैं, कर्मचारी आईडी 4002 विवरण प्रदर्शित होते हैं।
उदाहरण 2: मान लीजिए कि हम EXCEPT ऑपरेटर का उपयोग करके अपनी SELECT क्वेरी में उपरोक्त दो तालिकाओं Emp और Employee में शामिल होना चाहते हैं और परिणाम को उनके वेतन द्वारा अवरोही क्रम में क्रमबद्ध करते हैं। हम SQL क्वेरी में सेट किए गए परिणाम को सॉर्ट करने के लिए ORDER BY क्लॉज का उपयोग करेंगे।
SELECT EMPLOYEEID, CONCAT(FIRST_NAME, LAST_NAME) AS NAME, CITY, SALARY, MANAGER1.MANAGERID, MANAGER1.MANAGER_NAME FROM EMPLOYEE INNER JOIN MANAGER ON EMP.MANAGERID = MANAGER.MANAGERID EXCEPT SELECT EMPLOYEEID, CONCAT(FIRST_NAME, LAST_NAME) AS NAME, CITY, SALARY, MANAGER1.MANAGERID, MANAGER1.MANAGER_NAME FROM EMPLOYEE INNER JOIN MANAGER1 ON EMPLOYEE.MANAGERID = MANAGER1.MANAGERID ORDER BY SALARY;
उपरोक्त क्वेरी निम्न आउटपुट दिखाती है:
उदाहरण 3: मान लीजिए कि हम EXCEPT ऑपरेटर का उपयोग करके अपनी SELECT क्वेरी में उपरोक्त दो टेबल एम्प और कर्मचारी में शामिल होना चाहते हैं, जहां एम्प्लॉयी टेबल से कर्मचारी वेतन 55000 से अधिक है और कर्मचारी शहर में कर्मचारी तालिका से 'पुणे', 'मुंबई', 'जयपुर' शामिल हैं।
SELECT * FROM EMP WHERE SALARY > 55000 EXCEPT SELECT * FROM EMPLOYEE WHERE CITY IN ('Pune', 'Mumbai', 'Jaipur');
उपरोक्त क्वेरी पहले सेलेक्ट स्टेटमेंट में उन कर्मचारियों के सभी विवरण प्राप्त होते हैं जिनका वेतन Emp तालिका से 55000 से अधिक है। दूसरा सेलेक्ट स्टेटमेंट उन कर्मचारियों के सभी विवरण प्राप्त करता है जिनके शहरों में कर्मचारी तालिका से पुणे, मुंबई, जयपुर शामिल हैं। फिर, EXCEPT ऑपरेटर को Emp तालिका और कर्मचारी तालिका के बीच निष्पादित किया जाएगा।
यह निम्न आउटपुट देता है: