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

राइट जॉइन बनाम लेफ्ट जॉइन

वास्तव में नहीं, क्योंकि राइट जॉइन और लेफ्ट जॉइन सममित हैं। वह है:

A LEFT JOIN B = B RIGHT JOIN A

राइट जॉइन सिर्फ सिंटैक्टिक शुगर है। ऑप्टिमाइज़र बाएं जॉइन में राइट जॉइन को फिर से लिख सकता है:

mysql> explain extended select * from t right join t t2 using (c1)\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: t2
         type: index
possible_keys: NULL
          key: c2
      key_len: 5
          ref: NULL
         rows: 4201
     filtered: 100.00
        Extra: Using index
*************************** 2. row ***************************
           id: 1
  select_type: SIMPLE
        table: t
         type: eq_ref
possible_keys: PRIMARY
          key: PRIMARY
      key_len: 4
          ref: test.t2.c1
         rows: 1
     filtered: 100.00
        Extra: 
2 rows in set, 1 warning (0.00 sec)

ध्यान दें कि ऑप्टिमाइज़र में LEFT JOIN फिर से लिखना है (टेबल्स की अदला-बदली की जाती है):

mysql> show warnings\G
*************************** 1. row ***************************
  Level: Note
   Code: 1003
Message: select `test`.`t2`.`c1` AS `c1`,`test`.`t2`.`c2` AS `c2`,`test`.`t`.`c2` AS
`c2` from `test`.`t` `t2` left join `test`.`t` on((`test`.`t`.`c1` = `test`.`t2`.`c1`))  where 1
1 row in set (0.00 sec) 

ध्यान दें कि (ए राइट जॉइन बी! =ए लेफ्ट जॉइन बी) जब तक (ए इनर जॉइन बी =ए लेफ्ट जॉइन बी)। ऐसा इसलिए है क्योंकि ए राइट जॉइन बी, ए लेफ्ट जॉइन बी के साथ सममित नहीं है (यह बी लेफ्ट जॉइन ए के साथ सममित है)।

आपके मामले में, A RIGHT JOIN B, A LEFT JOIN B के समान होगा, जब तक कि आपके द्वारा शामिल किए जा रहे कॉलम में NULL मान न हों। यदि NULL मान हैं, तो A LEFT JOIN B, A RIGHT JOIN B के समान नहीं होगा। यदि आप संबंधित समाचार समूह (या इसके विपरीत) को जोड़े बिना नए लेख जोड़ते हैं तो परिणाम भी बदल जाएंगे।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL समूह द्वारा सबसे अधिक बार चुनें

  2. MySQL VARCHAR लंबाई और UTF-8

  3. क्या मैं '%' की तरह जहां कॉल कर सकता हूं, नल मान भी चुनें?

  4. जेसन की मदद से PHP, MySql का उपयोग करके एंड्रॉइड में उपयोगकर्ता लॉगिन क्रेडेंशियल्स को कैसे सत्यापित करें?

  5. कैसे mysql डेटाबेस (तालिका) में छवि सम्मिलित करने के लिए?