यह लेख RIGHT JOIN
. का एक सिंहावलोकन प्रदान करता है SQL में, साथ ही साथ कुछ बुनियादी उदाहरण।
इसे RIGHT OUTER JOIN
के नाम से भी जाना जाता है , RIGHT JOIN
उन पंक्तियों को लौटाता है जिनमें डेटा सही तालिका में होता है (JOIN
के दाईं ओर) कीवर्ड), भले ही बाईं तालिका में कोई मेल खाने वाली पंक्तियाँ न हों।
सिंटैक्स
आप FROM
. में राइट जॉइन निर्दिष्ट करते हैं खंड। आप या तो RIGHT JOIN
का उपयोग कर सकते हैं या RIGHT OUTER JOIN
वाक्य रचना।
RIGHT JOIN
का उपयोग करना वाक्य रचना:
SELECT *
FROM Table1 RIGHT JOIN Table2
ON Table1.Column = Table2.Column;
RIGHT OUTER JOIN
का उपयोग करना वाक्य रचना:
SELECT *
FROM Table1 RIGHT OUTER JOIN Table2
ON Table1.Column = Table2.Column;
ये दोनों बिल्कुल एक ही काम करते हैं। यह बस इतना ही है कि OUTER
कीवर्ड वैकल्पिक है।
उदाहरण
प्रदर्शित करने के लिए यहां कुछ उदाहरण दिए गए हैं।
नमूना डेटा
सबसे पहले, यहां वे टेबल हैं जिनका हम उदाहरणों के लिए उपयोग करेंगे।
PetTypes
तालिका:
+-------------+-----------+ | PetTypeId | PetType | |-------------+-----------| | 1 | Bird | | 2 | Cat | | 3 | Dog | | 4 | Rabbit | +-------------+-----------+ (4 rows affected)
Pets
तालिका:
+---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 4 | 3 | 3 | Wag | 2020-03-15 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +---------+-------------+-----------+-----------+------------+ (8 rows affected)
Owners
तालिका:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 1 | Homer | Connery | (308) 555-0100 | [email protected] | | 2 | Bart | Pitt | (231) 465-3497 | [email protected] | | 3 | Nancy | Simpson | (489) 591-0408 | NULL | | 4 | Boris | Trump | (349) 611-8908 | NULL | | 5 | Woody | Eastwood | (308) 555-0112 | [email protected] | +-----------+-------------+------------+----------------+-------------------+
ध्यान दें कि:
- द
PetTypeId
Pets
. का कॉलम तालिकाPetTypeId
. की एक विदेशी कुंजी हैPetTypes
का तालिका (जो उस तालिका की प्राथमिक कुंजी है)। - द
OwnerId
Pets
. का कॉलम तालिकाOwnerId
. की एक विदेशी कुंजी हैOwners
. का कॉलम टेबल.
राइट जॉइन क्वेरी
इनमें से दो टेबलों के सामने राइट जॉइन करने का एक उदाहरण यहां दिया गया है।
SELECT
p.PetName,
pt.PetType
FROM Pets p
RIGHT JOIN PetTypes pt
ON p.PetTypeId = pt.PetTypeId;
परिणाम:
+-----------+-----------+ | PetName | PetType | |-----------+-----------| | Tweet | Bird | | Fluffy | Cat | | Scratch | Cat | | Meow | Cat | | Fetch | Dog | | Wag | Dog | | Fluffy | Dog | | Bark | Dog | | NULL | Rabbit | +-----------+-----------+ (9 rows affected)
सही जॉइन से हमें एक PetType
मिलता है मान जो PetName
. से मेल नहीं खाता है . विशेष रूप से, पालतू जानवर के रूप में कोई खरगोश नहीं हैं। लेकिन सही जुड़ाव Rabbit
causes का कारण बनता है लौटाया जाना है, भले ही Pets
. में कोई पालतू जानवर न हो उस प्रकार की तालिका। इसका परिणाम NULL
होता है PetName
में मान Rabbit
. के सामने स्तंभ ।
ऐसा सिर्फ इसलिए हुआ क्योंकि Rabbit
दाएँ तालिका में था (अर्थात RIGHT JOIN
. के दाईं ओर कीवर्ड)।
यदि हम अपनी क्वेरी में तालिका क्रम को बदलते हैं तो यहां क्या होता है।
SELECT
p.PetName,
pt.PetType
FROM PetTypes pt
RIGHT JOIN Pets p
ON p.PetTypeId = pt.PetTypeId;
परिणाम:
+-----------+-----------+ | PetName | PetType | |-----------+-----------| | Fluffy | Cat | | Fetch | Dog | | Scratch | Cat | | Wag | Dog | | Tweet | Bird | | Fluffy | Dog | | Bark | Dog | | Meow | Cat | +-----------+-----------+ (8 rows affected)
इस बार Rabbit
वापस नहीं किया गया था। ऐसा इसलिए है क्योंकि इसकी तालिका (PetTypes
) शामिल होने के बाईं ओर था।
अगर हमें Rabbit
. चाहिए तो हमें इसे लेफ्ट जॉइन या फुल जॉइन में बदलना होगा इस तालिका क्रम का उपयोग करके लौटाया जाना है।
3 टेबल पर राइट जॉइन करें
यहां तीनों टेबल पर राइट जॉइन करने का एक उदाहरण दिया गया है।
SELECT
p.PetName,
pt.PetType,
CONCAT(o.FirstName, ' ', o.LastName) AS PetOwner
FROM Pets p RIGHT JOIN PetTypes pt
ON p.PetTypeId = pt.PetTypeId
RIGHT JOIN Owners o
ON p.OwnerId = o.OwnerId;
परिणाम:
+-----------+-----------+----------------+ | PetName | PetType | PetOwner | |-----------+-----------+----------------| | Tweet | Bird | Homer Connery | | Scratch | Cat | Bart Pitt | | Bark | Dog | Bart Pitt | | Fluffy | Cat | Nancy Simpson | | Fetch | Dog | Nancy Simpson | | Wag | Dog | Nancy Simpson | | Fluffy | Dog | Boris Trump | | Meow | Cat | Boris Trump | | NULL | NULL | Woody Eastwood | +-----------+-----------+----------------+ (9 rows affected)
इस बार हमारे पास एक पालतू जानवर का मालिक है जिसके पास कोई पालतू जानवर नहीं है।
हम फिर से तालिकाओं के क्रम में फेरबदल कर सकते हैं, और हमें एक अलग परिणाम मिलेगा।
SELECT
p.PetName,
pt.PetType,
CONCAT(o.FirstName, ' ', o.LastName) AS PetOwner
FROM Pets p RIGHT JOIN Owners o
ON p.OwnerId = o.OwnerId
RIGHT JOIN PetTypes pt
ON p.PetTypeId = pt.PetTypeId;
परिणाम:
+-----------+-----------+---------------+ | PetName | PetType | PetOwner | |-----------+-----------+---------------| | Tweet | Bird | Homer Connery | | Fluffy | Cat | Nancy Simpson | | Scratch | Cat | Bart Pitt | | Meow | Cat | Boris Trump | | Fetch | Dog | Nancy Simpson | | Wag | Dog | Nancy Simpson | | Fluffy | Dog | Boris Trump | | Bark | Dog | Bart Pitt | | NULL | Rabbit | | +-----------+-----------+---------------+ (9 rows affected)
इस बार हमें अतिरिक्त पालतू प्रकार मिला (Rabbit
), लेकिन अतिरिक्त स्वामी नहीं।
अगर आप सोच रहे हैं कि आखिरी PetOwner
. क्यों NULL
नहीं है (पिछले की तरह PetName
है), ऐसा इसलिए है क्योंकि यह एक स्ट्रिंग संयोजन का परिणाम है। मैंने टी-एसक्यूएल का इस्तेमाल किया CONCAT()
स्वामी के प्रथम और अंतिम नामों को जोड़ने का कार्य करता है।