आप एक एसक्यूएल ऑपरेटर बुलाया उपयोग करने की आवश्यकता आप क्या चाहते हैं पाने के लिए शामिल हों।
जॉइन एसक्यूएल भाषा का एक मौलिक हिस्सा है, जितना थोड़ी देर लूप अन्य प्रोग्रामिंग भाषाओं के लिए है।
यहाँ प्रारंभ: A Visual Explanation of SQL Joins
बनाम संघ में शामिल होने के बारे में सोच का एक और तरीका है:
- यूनिअन कतारें लग जोड़ देता है।
- जॉइन एक साथ स्तंभ जोड़ता है।
उदाहरण के लिए:
SELECT *
FROM table1
JOIN table2 USING (id);
इस में शामिल होने कि रिटर्न केवल पंक्तियों जो के लिए एक मिलान आईडी दोनों तालिकाओं में मौजूद है की एक शैली है। लेकिन आप उन सभी आईडी चाहते हैं जिनके लिए कम से कम एक तालिका या दूसरी पंक्ति में एक पंक्ति मौजूद है।
SELECT *
FROM table1
LEFT OUTER JOIN table2 USING (id);
यह table2 में उनसे मिलते-जुलते पंक्तियों के साथ, table1 से सभी पंक्तियों हो जाता है। लेकिन रिवर्स प्राप्त करने के लिए, हम आवश्यकता होगी:
SELECT *
FROM table1
RIGHT OUTER JOIN table2 USING (id);
एसक्यूएल भी परिभाषित करता है एक पूर्ण बाहरी शामिल हों जो दोनों एक ही बार में करना होगा, लेकिन दुर्भाग्य से MySQL SQL मानक के इस भाग को लागू नहीं किया। लेकिन हम दो प्रकार के जोड़ों को गठबंधन करने के लिए UNION
का उपयोग कर सकते हैं। संघ डिफ़ॉल्ट रूप से डुप्लिकेट पंक्तियों को खत्म कर देगा।
अपडेट: मैं इसे परेशान करता हूं, और इसे काम करने के लिए मिला। यह पता चला है कि आपको कॉलम को स्पष्ट रूप से नाम देना होगा, यह सुनिश्चित करने के लिए कि वे दोनों संघीय प्रश्नों में एक ही कॉलम में हैं। क्वेरी कि काम करता है, मेरी टर्मिनल विंडो से नकल है:
SELECT id, name, state
FROM table1
LEFT OUTER JOIN table2 USING (id)
UNION
SELECT id, name, state
FROM table1
RIGHT OUTER JOIN table2 USING (id);
यह सामान्य SELECT *
का उपयोग कर से बचने के लिए एक अच्छी आदत है, और इस बस एक और मामले में जहां यह एक अच्छा विचार है।
इसके अलावा, मैंने पहले क्वेरी उदाहरण में एक अतिसंवेदनशील अर्धविराम छोड़ा था। यह मेरे हिस्से पर सिर्फ एक टाइपो था।
+----+------+-------+
| id | name | state |
+----+------+-------+
| 1 | alan | NULL |
| 2 | bob | MI |
| 3 | dave | WV |
| 4 | NULL | FL |
+----+------+-------+
पुनश्च:: इतनी स्पष्ट रूप से सवाल पूछने के लिए धन्यवाद
इस क्वेरी निम्नलिखित उत्पादन, मेरे टर्मिनल विंडो से नकल का उत्पादन!
बहुत अच्छा प्रदर्शन और समस्या +1 की परिभाषा – SaidbakR