Semi joins और Anti joins के साथ subquerying

SQL में डेटा जॉइन करना

Maham Faisal Khan

Senior Content Developer, DataCamp

सभी joins को बुलाएँ

id फ़ील्ड पर INNER JOIN का डायग्राम

दो टेबल्स: left_table और right_table दिखाने वाला डायग्राम। दाईं ओर जॉइन का परिणाम है, जिसमें केवल वे रिकॉर्ड लौटे हैं जिनके id कॉलम दोनों टेबल्स में मैच हुए।

SQL में डेटा जॉइन करना

Additive joins

SELECT *
FROM left_table
INNER JOIN right_table
ON left_table.id = right_table.id;
SQL में डेटा जॉइन करना

Additive joins

एक additive join समझाने वाला डायग्राम। बाईं ओर दो टेबल्स left_table और right_table हैं। दाईं ओर दोनों टेबल्स पर id कॉलम से INNER JOIN का परिणाम है। अलग नाम वाले फ़ील्ड अपने मूल नामों के साथ जोड़े गए हैं। चूँकि date फ़ील्ड दोनों में है, यह दो बार जुड़ा है।

SQL में डेटा जॉइन करना

Semi join

एक semi join पहले टेबल से वे रिकॉर्ड चुनता है जहाँ दूसरी टेबल में शर्त पूरी होती है.

दो टेबल्स, left_table और right_table, जो semi join दिखाने के लिए उपयोग होंगी। left_table में दो कॉलम, id और col1 हैं। right_table में केवल एक कॉलम, col2 है।

SQL में डेटा जॉइन करना

Semi join

दो टेबल्स, left_table और right_table, जो semi join दिखाने के लिए उपयोग हो रही हैं। col2, col1 को फ़िल्टर करेगा। left_table के वे रिकॉर्ड जहाँ col1 का col2 में मैच नहीं मिलता, फेड कर दिए गए हैं।

SQL में डेटा जॉइन करना

Semi join

दो टेबल्स, left_table और right_table। दाईं ओर दोनों टेबल्स पर semi join का परिणाम है। केवल left_table के वे रिकॉर्ड लौटे हैं जहाँ col1 का col2 में मैच मिला। ये ids 2 और 3 से मेल खाते हैं।

SQL में डेटा जॉइन करना

हमारे semi join की शुरुआत

SELECT country, continent, president
FROM presidents;
| country  | continent     | president               |
| -------- | ------------- | ----------------------- |
| Egypt    | Africa        | Abdel Fattah el-Sisi    |
| Portugal | Europe        | Marcelo Rebelo de Sousa | 
| USA      | North America | Joe Biden               |
| Uruguay  | South America | Luis Lacalle Pou        |
| Pakistan | Asia          | Asif Ali Zardari        |
| Chile    | South America | Gabriel Boric           |
| India    | Asia          | Droupadi Murmu          |
SQL में डेटा जॉइन करना

Semi join पर आगे बढ़ते हुए

SELECT country
FROM states
WHERE indep_year < 1800;
|----------|
| country  |
|----------|
| Portugal |
| Spain    |
|----------|
SQL में डेटा जॉइन करना

Semi join पूरा करें (subqueries का परिचय)

SELECT president, country, continent
FROM presidents
WHERE country IN
    (SELECT country
     FROM states
     WHERE indep_year < 1800);
|-------------------------|-----------|-------------|
| president               | country   | continent   |
|-------------------------|-----------|-------------|
| Marcelo Rebelo de Sousa | Portugal  | Europe      |
|-------------------------|-----------|-------------|
SQL में डेटा जॉइन करना

Anti join

दो टेबल्स, left_table और right_table, जो anti join दिखाने के लिए उपयोग हो रही हैं। col2, col1 को फ़िल्टर करेगा। left_table के जिन रिकॉर्ड्स में col1 का col2 में मैच नहीं मिलता, उन्हें फेड नहीं किया गया है।

SQL में डेटा जॉइन करना

Anti join

दो टेबल्स, left_table और right_table। दाईं ओर दोनों टेबल्स पर anti join का परिणाम है। केवल left_table के वे रिकॉर्ड लौटे हैं जहाँ col1 का col2 में मैच नहीं मिला। ये ids 1 और 4 से मेल खाते हैं।

SQL में डेटा जॉइन करना

Presidents के साथ एक anti join

SELECT country, president
FROM presidents
WHERE continent LIKE '%America' 
    AND country NOT IN
        (SELECT country
         FROM states
         WHERE indep_year < 1800);
| country  |  president       |
| -------- | ---------------- | 
| Uruguay  | Luis Lacalle Pou |
| Chile    | Gabriel Boric    |
SQL में डेटा जॉइन करना

अभ्यास करते हैं!

SQL में डेटा जॉइन करना

Preparing Video For Download...