सारांश :इस ट्यूटोरियल में, आप सीखेंगे कि SQLite EXISTS का उपयोग कैसे करें एक सबक्वेरी द्वारा लौटाई गई पंक्तियों के अस्तित्व का परीक्षण करने के लिए ऑपरेटर।
SQLite का परिचय EXISTS ऑपरेटर
EXISTS ऑपरेटर एक तार्किक ऑपरेटर है जो यह जांचता है कि कोई सबक्वेरी कोई पंक्ति लौटाती है या नहीं।
यहां EXISTS का मूल सिंटैक्स दिया गया है ऑपरेटर:
EXISTS(subquery)
Code language: SQL (Structured Query Language) (sql)
इस सिंटैक्स में, सबक्वेरी एक SELECT है बयान जो शून्य या अधिक पंक्तियों को लौटाता है।
यदि सबक्वेरी एक या अधिक पंक्ति लौटाती है, तो EXISTS ऑपरेटर सच लौटता है। अन्यथा, EXISTS ऑपरेटर गलत या NULL लौटाता है ।
ध्यान दें कि यदि सबक्वेरी NULL . के साथ एक पंक्ति लौटाती है , EXISTS . का परिणाम ऑपरेटर अभी भी सही है क्योंकि परिणाम सेट में NULL वाली एक पंक्ति है।
EXISTS को नकारने के लिए ऑपरेटर, आप NOT EXISTS . का उपयोग करते हैं ऑपरेटर इस प्रकार है:
NOT EXISTS (subquery)Code language: SQL (Structured Query Language) (sql)
NOT EXISTS यदि सबक्वेरी कोई पंक्ति नहीं लौटाती है, तो ऑपरेटर सत्य लौटाता है।
SQLite EXISTS ऑपरेटर उदाहरण
निम्नलिखित देखें Customers और Invoices नमूना डेटाबेस से टेबल:
निम्नलिखित कथन उन ग्राहकों को ढूंढता है जिनके पास चालान हैं:
SELECT
CustomerId,
FirstName,
LastName,
Company
FROM
Customers c
WHERE
EXISTS (
SELECT
1
FROM
Invoices
WHERE
CustomerId = c.CustomerId
)
ORDER BY
FirstName,
LastName;
Code language: SQL (Structured Query Language) (sql) निम्न चित्र आंशिक परिणाम सेट दिखाता है:
इस उदाहरण में, प्रत्येक ग्राहक के लिए, EXISTS ऑपरेटर जाँचता है कि क्या ग्राहक आईडी Invoices . में मौजूद है टेबल।
- यदि हाँ, तो सबक्वेरी मान 1 के साथ एक पंक्ति लौटाती है जो
EXISTSका कारण बनती है ऑपरेटर सत्य का मूल्यांकन करता है। इसलिए, क्वेरी में परिणाम सेट में कर्सर शामिल है। - यदि ग्राहक आईडी
Invoicesमें मौजूद नहीं है तालिका, सबक्वेरी कोई पंक्ति नहीं लौटाती है जोEXISTS. का कारण बनती है असत्य का मूल्यांकन करने के लिए ऑपरेटर, इसलिए क्वेरी में ग्राहक को परिणाम सेट में शामिल नहीं किया जाता है।
ध्यान दें कि आप IN . का उपयोग कर सकते हैं EXISTS . के बजाय ऑपरेटर इस मामले में एक ही परिणाम प्राप्त करने के लिए ऑपरेटर:
SELECT
CustomerId,
FirstName,
LastName,
Company
FROM
Customers c
WHERE
CustomerId IN (
SELECT
CustomerId
FROM
Invoices
)
ORDER BY
FirstName,
LastName;Code language: SQL (Structured Query Language) (sql)
एक बार जब सबक्वेरी पहली पंक्ति लौटा देती है, तो EXISTS ऑपरेटर खोजना बंद कर देता है क्योंकि यह परिणाम निर्धारित कर सकता है। दूसरी ओर, IN परिणाम निर्धारित करने के लिए ऑपरेटर को सबक्वेरी द्वारा लौटाई गई सभी पंक्तियों को स्कैन करना होगा।
सामान्यतया, EXISTS ऑपरेटर IN . से तेज है ऑपरेटर यदि सबक्वायरी द्वारा लौटाया गया परिणाम सेट बड़ा है। इसके विपरीत, IN ऑपरेटर EXISTS . से तेज है ऑपरेटर यदि सबक्वेरी द्वारा लौटाया गया परिणाम सेट छोटा है।
SQLite NOT EXISTS ऑपरेटर उदाहरण
नमूना डेटाबेस से निम्नलिखित कलाकार और एल्बम तालिका देखें:
यह क्वेरी उन सभी कलाकारों को ढूंढती है जिनके पास एल्बम तालिका में कोई एल्बम नहीं है:
SELECT
*
FROM
Artists a
WHERE
NOT EXISTS(
SELECT
1
FROM
Albums
WHERE
ArtistId = a.ArtistId
)
ORDER BY Name;Code language: SQL (Structured Query Language) (sql) यहाँ आंशिक आउटपुट है:
इस ट्यूटोरियल में, आपने सीखा है कि SQLite EXISTS . का उपयोग कैसे किया जाता है एक सबक्वेरी द्वारा लौटाई गई पंक्तियों के अस्तित्व का परीक्षण करने के लिए ऑपरेटर।