बिडरेक्शनल बाहरी शामिल हों

मान लें कि हमारे पास एक टेबल ए है:

itemid mark
1      5
2      3

और तालिका बी:

itemid mark
1      3
3      5

मैं ए * बी में ए * बी में शामिल होना चाहता हूं। बीटाइम दोनों दाएं और बाएं तरीकों से। यानी परिणाम:

itemid A.mark B.mark
1      5      3
2      3      NULL
3      NULL   5

क्या MySQL में एक क्वेरी में ऐसा करने का कोई तरीका है?

0
ro fr bn

3 उत्तर

यह SQL सर्वर पर मेरे लिए काम करता है:

select isnull(a.id, b.id), a.mark, b.mark
from a 
full outer join b on b.id = a.id
0
जोड़ा
प्रश्न स्पष्ट रूप से MySQL बताता है
जोड़ा लेखक cdeszaq, स्रोत

कुछ काम के साथ कर सकता है लेकिन यहां कुछ वर्ग है

select distinct T.itemid, A.mark as "A.mark", B.mark as "B.mark"
    from (select * from A union select * from B) T 
    left join A on T.itemid = A.itemid 
    left join B on T.itemid = B.itemid;

यह बाएं जुड़ने पर निर्भर करता है, जो मूल तालिका में सभी पंक्तियों को लौटाता है (इस मामले में यह उप-चयन तालिका टी है)। यदि शामिल तालिका में कोई मिलान नहीं है, तो यह कॉलम को NULL पर सेट करेगा।

0
जोड़ा

इसे पूर्ण बाहरी जुड़ाव कहा जाता है और यह MySQL में मूल रूप से समर्थित नहीं है, इसके दस्तावेज़ । आप यूनियन का उपयोग करके इस सीमा के आसपास काम कर सकते हैं जैसा कि मैंने लिंक किए गए पृष्ठ पर टिप्पणियों में वर्णित किया है।

[संपादित करें] चूंकि अन्य ने स्निपेट पोस्ट किए हैं, यहां आप जाते हैं। आप लिंक किए गए पेज पर स्पष्टीकरण देख सकते हैं।

SELECT *
FROM A LEFT JOIN B ON A.id = B.id
UNION ALL
SELECT *
FROM A RIGHT JOIN B ON A.id = B.id
WHERE A.id IS NULL
0
जोड़ा