SQL Server (Transact-SQL) में, INTERSECT ऑपरेटर का उपयोग डेटा सेट या SELECT स्टेटमेंट दोनों में रिकॉर्ड वापस करने के लिए किया जाता है। यदि कोई रिकॉर्ड केवल एक क्वेरी में उपलब्ध है और दूसरे में नहीं, तो उसे INTERSECT के परिणाम सेट से हटा दिया जाएगा।
इंटरसेक्ट क्वेरी
इंटरसेक्ट क्वेरी से लौटाए गए परिणाम को स्पष्ट करें
स्पष्टीकरण: इंटरसेक्ट क्वेरी ब्लू फिल क्षेत्र में स्थित रिकॉर्ड लौटाएगी। ये रिकॉर्ड डेटाबेस1 और डेटाबेस2 दोनों में हैं।
INTERSECT में प्रत्येक चयन में समान डेटा प्रकार के साथ परिणाम सेट में समान संख्या में कॉलम होने चाहिए।
इंटर्सेक्ट ऑपरेटर सिंटैक्स
SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn
FROM bang
[WHERE dieu_kien]
INTERSECT
SELECT bieu_thuc1, bieu_thuc2, … bieu_thucn
FROM bang
[WHERE dieu_kie
n];
परिवर्तनीय नाम या चर मान
bieu_thuc
वह कॉलम या मान जिसे आप SELECT स्टेटमेंट के बीच तुलना करना चाहते हैं। ज़रूरी नहीं है कि वे हर सेलेक्ट स्टेटमेंट में एक ही सूचना क्षेत्र में हों, लेकिन संबंधित कॉलम में एक ही डेटा होना चाहिए।
स्थिति
तालिका वहां से रिकॉर्ड प्राप्त करना चाहती है। FROM क्लॉज में कम से कम 1 टेबल होना चाहिए।
जहां dieu_kien
Option. चयनित रिकॉर्ड के लिए शर्तें पूरी होनी चाहिए।
नोट:
- दो चयन कथनों में समान भाव होने चाहिए।
- प्रत्येक SELECT स्टेटमेंट में संबंधित कॉलम का डेटा प्रकार समान होना चाहिए।
- इंटरसेक्ट ऑपरेटर SELECT स्टेटमेंट के बीच केवल सामान्य रिकॉर्ड लौटाता है।
उदाहरण के लिए - 1 एक्सप्रेशन के साथ
SELECT sanpham_id
FROM sanpham
INTERSECT
SELECT sanpham_id
FROM hangtonk
ho;
इस उदाहरण में, यदि sanpham_id, sanpham और hangtonkho दोनों टेबलों पर दिखाई देता है, तो यह INTERSECT के परिणाम सेट में होगा।
अब इस क्वेरी में WHERE शर्त जोड़ें।
SELECT sanpham_id
FROM sanpham
WHERE sanpham_id >= 50
INTERSECT
SELECT sanpham_id
FROM hangtonkho
WHERE soluong >
0;
पहला डेटासेट डैशबोर्ड और sanpham_id
में रिकॉर्ड्स को फ़िल्टर और लौटाएगा 50 से अधिक या उसके बराबर। दूसरा डेटा सेट hangtonkho
. से फ़िल्टर होगा तालिका यदि संख्या 0 से अधिक है।
उदाहरण के लिए - अनेक भावों के साथ
SELECT danhba_id, ho, ten
FROM danhba
WHERE ho = 'Anderson'
INTERSECT
SELECT nhanvien_id, ho, ten
FROM nh
anvien;
इस उदाहरण में, क्वेरी दो SELECT कथनों के प्रतिच्छेदन का परिणाम लौटाती है। अगर danhba
. की सूची में कोई रिकॉर्ड है वह danhba_id
, ho
, ten
danhba
danhba_id
, INTERSECT क्वेरी का नाम उन रिकॉर्ड्स को लौटा देगा।
उदाहरण के लिए - ORDER BY का उपयोग करें
परिणामों को क्रमबद्ध करने के लिए INTERSECT क्वेरी के साथ ORDER BY क्लॉज का उपयोग करें।
SELECT nhacung_id, nhacung_ten
FROM nhacung
WHERE nhacung_id > 500
INTERSECT
SELECT congty_id, congty_ten
FROM congty
WHERE congty_ten in ('Apple', 'Microsoft', 'SQL Server')
ORDER BY 2;
चूंकि दो SELECT स्टेटमेंट में कॉलम का नाम अलग है, इसलिए ORDER BY क्लॉज में कॉलम को परिणाम सेट में उनकी स्थिति के आधार पर संदर्भित करना आसान है। उपरोक्त उदाहरण में, हम परिणाम को फ़िल्टर करते हैं nhacung_ten
/ congty_ten
ORDER BY 2 वाक्यांश के माध्यम से आरोही क्रम में।
क्योंकि nhacung_ten
/ congty_ten
परिणाम सेट में दूसरा है।