SQLite में, INTERSECT
ऑपरेटर का उपयोग एक कंपाउंड बनाने के लिए किया जाता है SELECT
वह कथन जो बाएँ और दाएँ के परिणामों का प्रतिच्छेदन देता है SELECT
बयान। दूसरे शब्दों में, यह दो प्रश्नों को जोड़ता है, लेकिन केवल उन पंक्तियों को लौटाता है जो दोनों प्रश्नों में वापस आती हैं।
उदाहरण
मान लीजिए कि हमारे पास निम्नलिखित टेबल हैं:
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 Monish Rohit
इसलिए हमें केवल वही मान मिलते हैं जो Employees
. में दिखाई देते हैं तालिका जो Customers
. में भी दिखाई देती है टेबल।
SQLite का INTERSECT
. का कार्यान्वयन ऑपरेटर केवल अलग पंक्तियाँ देता है। तो उपरोक्त उदाहरण मोनिश के लिए केवल एक पंक्ति देता है, भले ही उस नाम के कई कर्मचारी और एकाधिक ग्राहक हों।
अन्य RDBMS हमें एक वैकल्पिक ALL
. स्वीकार करके परिणाम में डुप्लीकेट शामिल करने की अनुमति देते हैं कीवर्ड उनके INTERSECT
. के साथ ऑपरेटर, लेकिन SQLite नहीं करता है (कम से कम, लेखन के समय नहीं)। कुछ भी परिवर्तन होने पर SQLite के दस्तावेज़ों की जाँच करने के लिए स्वतंत्र महसूस करें।
एक वैकल्पिक क्वेरी
INTERSECT
. का उपयोग किए बिना समान परिणाम प्राप्त करना संभव है ऑपरेटर। उदाहरण के लिए, हम इसके लिए अपना पहला उदाहरण फिर से लिख सकते हैं:
SELECT
DISTINCT EmployeeName
FROM Employees e
WHERE EXISTS (SELECT CustomerName FROM Customers c
WHERE e.EmployeeName = c.CustomerName);
परिणाम:
EmployeeName ------------ Ava Rohit Monish