PostgreSQL में, INTERSECT
ऑपरेटर दो प्रश्नों को जोड़ता है, लेकिन केवल उन पंक्तियों को लौटाता है जो दोनों प्रश्नों में वापस आती हैं।
सिंटैक्स
वाक्य रचना इस प्रकार है:
query1 INTERSECT [ALL] query2
जब तक INTERSECT ALL
. तब तक डुप्लीकेट हटा दिए जाते हैं उपयोग किया जाता है।
उदाहरण
मान लीजिए कि हमारे पास निम्नलिखित टेबल हैं:
SELECT * FROM Employees;
SELECT * FROM Customers;
परिणाम:
employeeid | employeename ------------+-------------- 1 | Bart 2 | Jan 3 | Ava 4 | Rohit 5 | Monish 6 | Monish 7 | Monish customerid | customername ------------+-------------- 1 | Mia 2 | Rohit 3 | Peter 4 | Ava 5 | Monish 6 | Monish
हम INTERSECT
. का उपयोग कर सकते हैं ऑपरेटर उन कर्मचारियों को लौटाएगा जो ग्राहक भी हैं:
SELECT EmployeeName FROM Employees
INTERSECT
SELECT CustomerName FROM Customers;
परिणाम:
employeename -------------- Ava Rohit Monish
इसलिए हमें केवल वही मान मिलते हैं जो Employees
. में दिखाई देते हैं तालिका जो Customers
. में भी दिखाई देती है टेबल।
डिफ़ॉल्ट रूप से, यह अलग-अलग पंक्तियाँ देता है, इसलिए मोनिश के लिए केवल एक पंक्ति लौटाई जाती है, भले ही उस नाम के कई कर्मचारी और कई ग्राहक हों।
यह ऐसा करने जैसा ही है:
SELECT EmployeeName FROM Employees
INTERSECT DISTINCT
SELECT CustomerName FROM Customers;
परिणाम:
employeename -------------- Ava Rohit Monish
इसलिए हमें वही परिणाम मिलता है जो हमें तब मिलता था जब हमने DISTINCT
. को शामिल नहीं किया था ऑपरेटर।
डुप्लिकेट शामिल करें
जैसा कि बताया गया है, INTERSECT
ऑपरेटर डिफ़ॉल्ट रूप से केवल विशिष्ट मान देता है। लेकिन हम ALL
जोड़ सकते हैं डुप्लीकेट शामिल करने के लिए कीवर्ड:
SELECT EmployeeName FROM Employees
INTERSECT ALL
SELECT CustomerName FROM Customers;
परिणाम:
employeename -------------- Ava Rohit Monish Monish
इस बार हमें अपने पहले उदाहरण में तीन के बजाय चार पंक्तियाँ मिलीं।
हम देख सकते हैं कि मोनिश नाम वाली दो पंक्तियाँ हमारे पहले उदाहरण की तरह ही एक के बजाय वापस कर दी गईं। वास्तव में मोनिश नाम के तीन ग्राहक हैं, लेकिन उस नाम के केवल दो कर्मचारी हैं। इसलिए, ऑपरेशन केवल उनमें से दो को काटता है।
एक वैकल्पिक क्वेरी
INTERSECT
. का उपयोग किए बिना समान परिणाम प्राप्त करना संभव है ऑपरेटर। उदाहरण के लिए, हम इसके लिए अपना पहला उदाहरण फिर से लिख सकते हैं:
SELECT
DISTINCT EmployeeName
FROM Employees e
WHERE EXISTS (SELECT CustomerName FROM Customers c
WHERE e.EmployeeName = c.CustomerName);
परिणाम:
employeename -------------- Ava Rohit Monish