PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL में INTERSECT कैसे काम करता है

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं Postgres में किसी तालिका में प्रति रिकॉर्ड एक अद्वितीय स्ट्रिंग कैसे उत्पन्न कर सकता हूं?

  2. GroupingError:ERROR:कॉलम ग्रुप बाय क्लॉज में दिखाई देना चाहिए या एक समग्र फ़ंक्शन में उपयोग किया जाना चाहिए

  3. पोस्टग्रेएसक्यूएल 12:के-निकटतम पड़ोसी अंतरिक्ष विभाजन को लागू करना सामान्यीकृत खोज ट्री इंडेक्स

  4. Postgresql में आईडी कॉलम स्थिति महत्वपूर्ण है?

  5. पोस्टग्रेसक्यूएल से साधारण फजी खोज कैसे बनाएं?