Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

SQL अलग-अलग दिनों के लिए डेटा तुलना के साथ सेल्फ-जॉइन

आपको डुप्लिकेट कॉलम मिल रहे हैं क्योंकि जैसा आपके पास है, आप T1 और T2 से क्वेरी कर रहे हैं। तो जब तक आप स्पष्ट रूप से नहीं कहते कि मुझे केवल T1 दिखाओ। * यह दोनों तालिका उपनाम संदर्भों से कॉलम प्राप्त करेगा।

चूंकि आपकी क्वेरी तारीखों पर OR कर रही है, इसलिए संभवतः आपको कार्टेशियन परिणाम भी मिलने वाला है।

अब आप अपनी टेबल संरचना को जानते हैं, लेकिन आप एक स्पष्ट क्वेरी के साथ बेहतर हो सकते हैं जैसे...

SELECT
      t1.day,
      t2.day as OtherDay,
      t1.quality,
      t1.anotherColumn,
      t2.OtherAnotherColumn,
      t1.thirdColumn,
      t2.OtherThirdColumn
   FROM 
      my_table t1
         join my_table t2
            on t1.quality = t2.quality
           AND t2.day = '2015-01-09'
   where
      t1.day = '2015-01-08' 

क्वेरी को ऑप्टिमाइज़ करने के लिए (दिन, गुणवत्ता) के आधार पर अपने "my_table" पर एक इंडेक्स रखें। और आप केवल जोड़े में जोड़ना जारी रख सकते हैं, जिन स्तंभों की आप दिन 1 और दिन 2 के बीच तुलना करने का प्रयास कर रहे हैं। T1 केवल पहले दिन से जुड़े लोगों को लौटाएगा, और T2 उपनाम केवल दूसरी तारीख के लिए मिलान प्रविष्टियों के लिए दिखाई देगा।

अब, यदि केवल T1 पक्ष में ऐसी प्रविष्टियाँ हैं जिनमें गुणवत्ता और दिनांक के लिए कोई संगत T2 प्रविष्टि नहीं है, लेकिन आप अभी भी उन्हें देखना चाहते हैं, तो बस JOIN को LEFT JOIN में बदलें।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php password_verify () हैश और पास मेल नहीं खाएगा

  2. मैं डुप्लिकेट नाम इनपुट को रोकने के लिए प्रतीत नहीं कर सकता

  3. MySQL UTF-8 कैरेक्टर इंसर्ट इश्यू

  4. MySQL PHP असंगति

  5. जावा एसई पर जेपीए:ऑब्जेक्ट:[ईमेल संरक्षित] एक ज्ञात इकाई प्रकार नहीं है