SQL Server में EXCEPT ऑपरेटर
SQL Server में EXCEPT ऑपरेटर का उपयोग पहले SELECT स्टेटमेंट में मौजूद उन पंक्तियों को वापस करने के लिए किया जाता है जो दूसरे SELECT स्टेटमेंट में नहीं हैं। प्रत्येक SELECT स्टेटमेंट का एक डेटा सेट होता है। EXCEPT ऑपरेटर पहले सेट से रिकॉर्ड लेता है और दूसरे सेट के परिणामों को हटा देता है।
EXCEPT क्वेरी

EXCEPT क्वेरी चित्रण
व्याख्या: EXCEPT क्वेरी नीले क्षेत्र में रिकॉर्ड वापस करती है, जो केवल डेटा सेट 1 में हैं और डेटा सेट 2 में नहीं।
EXCEPT क्वेरी में प्रत्येक SELECT स्टेटमेंट में परिणाम सेट में समान संख्या में फ़ील्ड होने चाहिए जिनका डेटा प्रकार समान हो।
EXCEPT ऑपरेटर सिंटैक्स
SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn
FROM bang
[WHERE dieu_kien]
EXCEPT
SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn
FROM bang
[WHERE dieu_kien];
चर नाम या मान
bieu_thuc
वह कॉलम या मान जिसकी तुलना आप SELECT स्टेटमेंट्स के बीच करना चाहते हैं। उन्हें प्रत्येक SELECT स्टेटमेंट में समान सूचना क्षेत्र में होने की आवश्यकता नहीं है, लेकिन संबंधित कॉलम में समान डेटा होना चाहिए।
bang
वह टेबल जहां से आप रिकॉर्ड प्राप्त करना चाहते हैं। FROM क्लॉज में कम से कम 1 टेबल होना चाहिए।
WHERE dieu_kien
वैकल्पिक। शर्तें जिन्हें चयनित रिकॉर्ड के लिए पूरा करना होगा।
नोट:
- दोनों SELECT स्टेटमेंट्स में समान संख्या में एक्सप्रेशन होने चाहिए।
- प्रत्येक SELECT स्टेटमेंट में संबंधित कॉलम का डेटा प्रकार समान होना चाहिए।
- EXCEPT ऑपरेटर पहले SELECT स्टेटमेंट के सभी रिकॉर्ड वापस करता है जो दूसरे SELECT स्टेटमेंट में नहीं हैं।
- SQL Server में EXCEPT ऑपरेटर Oracle में MINUS ऑपरेटर के बराबर है।
उदाहरण - 1 एक्सप्रेशन के साथ
SELECT sanpham_id
FROM sanpham
EXCEPT
SELECT sanpham_id
FROM hangtonkho;
इस EXCEPT ऑपरेटर उदाहरण में, परिणाम sanpham टेबल के सभी sanpham_id मान वापस करता है जो hangtonkho टेबल में नहीं हैं। इसका मतलब है कि यदि sanpham_id मान दोनों टेबल्स में मौजूद है, तो वह वापस नहीं किया जाएगा।
उदाहरण - एकाधिक एक्सप्रेशन के साथ
SELECT danhba_id, ho, ten
FROM danhba
WHERE ho = 'Anderson'
EXCEPT
SELECT nhanvien_id, ho, ten
FROM nhanvien;
इस उदाहरण में, क्वेरी danhba टेबल में उन रिकॉर्ड्स को वापस करती है जिनका संपर्क आईडी, पहला और अंतिम नाम 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 परिणाम सेट में दूसरे स्थान पर है।