SQL सर्वर में EXCEPT ऑपरेटर का उपयोग पहले SELECT स्टेटमेंट में पंक्तियों को वापस करने के लिए किया जाता है जो दूसरे SELECT स्टेटमेंट में वापस नहीं आते हैं। प्रत्येक SELECT स्टेटमेंट में एक डेटा सेट होगा। EXCEPT ऑपरेटर पहले सेट से रिकॉर्ड लेता है और सेट 2 से परिणाम निकालता है।
क्वेरी को छोड़कर
क्वेरी इलस्ट्रेशन को छोड़कर
स्पष्टीकरण: EXCEPT क्वेरी नीले क्षेत्र में रिकॉर्ड लौटाती है, केवल डेटा सेट 1 में और डेटा सेट 2 में नहीं।
EXCEPT क्वेरी में प्रत्येक SELECT स्टेटमेंट में समान डेटा प्रकार के साथ सेट किए गए परिणाम में फ़ील्ड की संख्या समान होनी चाहिए।
ऑपरेटर सिंटैक्स को छोड़कर
SELECT bieu_thuc1thuc1, bieu_thuc2, … bieu_thucn
FROM bang
[WHERE dieu_kien]
EXCEPT
SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn
FROM bang
[WHERE dieu_kie
n];
परिवर्तनीय नाम या चर मान
bieu_thuc
वह कॉलम या मान जिसे आप SELECT स्टेटमेंट के बीच तुलना करना चाहते हैं। ज़रूरी नहीं है कि वे हर सेलेक्ट स्टेटमेंट में एक ही सूचना क्षेत्र में हों, लेकिन संबंधित कॉलम में एक ही डेटा होना चाहिए।
स्थिति
तालिका वहां से रिकॉर्ड प्राप्त करना चाहती है। FROM क्लॉज में कम से कम 1 टेबल होना चाहिए।
जहां dieu_kien
Option. चयनित रिकॉर्ड के लिए शर्तें पूरी होनी चाहिए।
नोट:
- दो चयन कथनों में समान भाव होने चाहिए।
- प्रत्येक SELECT स्टेटमेंट में संबंधित कॉलम का डेटा प्रकार समान होना चाहिए।
- EXCEPT ऑपरेटर पहले SELECT स्टेटमेंट से सभी रिकॉर्ड लौटाता है न कि दूसरे SELECT स्टेटमेंट में।
- SQL सर्वर में EXCEPT ऑपरेटर Oracle में MINUS ऑपरेटर के बराबर है।
उदाहरण के लिए - 1 एक्सप्रेशन के साथ
SELECTsanpham_id
FROM sanpham
EXCEPT
SELECT sanpham_id
FROM hang
tonkho;
इस EXCEPT ऑपरेटर के साथ उदाहरण में, परिणाम सभी sanpham_id मानों को वेरिएबल की तालिका में लौटाता है न कि हैंगटनखो तालिका में। इसका अर्थ यह है कि यदि sanpham_id मान दोनों टेबलों पर उपलब्ध है, तो इसे वापस नहीं किया जाएगा।
उदाहरण के लिए - अनेक भावों के साथ
SELECT danhba_id, ho, ten
FROM danhba
WHERE ho = 'Anderson'
EXCEPT
SELECT nhanvien_id, ho, ten
FROM nhanvien
;
इस उदाहरण में, क्वेरी संपर्क आईडी के साथ नंबा तालिका में रिकॉर्ड लौटाती है, प्रथम और अंतिम नाम कर्मचारी की आईडी, अंतिम नाम और प्रथम नाम से मेल नहीं खाते हैं टेबल।
उदाहरण के लिए - ORDER BY क्लॉज का उपयोग करें
SELECT nhacung_id, nhacung_ten
FROM nhacung
WHERE bang = 'Florida'
EXCEPT
SELECT congty_id, congty_ten
FROM congty
WHERE congty_id <= 400
ORDER BY 2;
इस उदाहरण में, क्योंकि दो SELECT स्टेटमेंट में कॉलम का नाम अलग है, परिणाम सेट में स्थिति के माध्यम से ORDER BY क्लॉज द्वारा कॉलम को संदर्भित करना आसान है। उपरोक्त उदाहरण में, हम परिणाम nhacung_ten / congty_ten को आरोही क्रम में ORDER BY 2 वाक्यांश के माध्यम से फ़िल्टर करते हैं।
क्योंकि nhacung_ten / congty_ten परिणाम सेट में दूसरा है।