आज मैंने कुछ और जटिल MySQL प्रश्नों का प्रयास किया है और मैंने देखा है कि MySQL की बाएं जॉइन WHERE क्लॉज के साथ काम नहीं कर रही है। मेरा मतलब है, यह कुछ रिकॉर्ड वापस करता है लेकिन यह उन लोगों को वापस नहीं करता है जो दाईं तरफ खाली हैं।क्यों MySQL की बाएं जॉइन WHERE क्लॉज के साथ "NULL" रिकॉर्ड लौट रही है?
उदाहरण के लिए मान लीजिए कि हम तालिकाओं के लिए मिल गया है चलो:
albums ; albums_rap id artist title tracks ; id artist title rank ---- -------- ---------- --------------- ; ---- --------- ----- -------------- 1 John Doe Mix CD 20 ; 3 Mark CD #7 15 2 Mark CD #7 35 ;
और जब मैं इस क्वेरी चलाने: मैं मिल
SELECT
t1.artist as artist,
t1.title as title,
t1.tracks as tracks,
t2.rank as rank,
FROM
albums as t1
LEFT JOIN
albums_rap as t2
ON
t1.artist LIKE t2.artist
AND
t1.title LIKE t2.title
WHERE
t2.rank != 17
इस:
artist title tracks rank ------ ----- ------ ----- Mark CD #7 35 15
लेकिन जब मैं इस क्वेरी में "ANDER" के साथ "WHERE" को प्रतिस्थापित करें I:
artist title tracks rank ------ --------- ------ ----- Mark CD #7 35 15 John Doe Mix CD 20 NULL
क्यों पहले एक "शून्य" के साथ रिकॉर्ड नहीं लौटा रहा है (शून्य 17 के बराबर नहीं है ...)
मुझे आशा है कि आप समझ में आ रहा क्या मतलब है और आप किसी भी तरह मुझे अंतर समझाएंगे। मेरी बुरी अंग्रेजी के लिए खेद है, यह मेरी मातृभाषा नहीं है।
वाम जहां हालत भीतरी में शामिल होने के साथ शामिल हो। –
आपको वास्तव में अपने टेबल डिज़ाइन पर पुनर्विचार करने की आवश्यकता है। स्टार्टर्स के लिए, एल्बम टेबल में स्ट्रिंग के रूप में कलाकार को संग्रहीत करना वास्तव में एक बुरा विचार है। यदि आप दोनों को "जॉन स्मिथ" कहा जाता है तो आप कलाकारों को अलग कैसे कहते हैं? आपके पास एल्बम टेबल में एक अलग कलाकार तालिका और स्टोर कलाकार आईडी होनी चाहिए। साथ ही, प्रत्येक शैली के लिए एक अलग टेबल रखना बुरा है। – GordonM
@GordonM के बजाय एक शैली आईडी कॉलम रखें: यह सिर्फ एक उदाहरण था, मेरी तालिका ऐसा कुछ नहीं दिखती है लेकिन मैं बेहतर और आसान नहीं सोच सकता था। एल्बम टेबल में सभी कलाकारों और आईडी के साथ तालिका के साथ वैसे भी अच्छा विचार, धन्यवाद! – simivar