Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

gabung kanan versus gabung kiri

Tidak juga, karena RIGHT JOIN dan LEFT JOIN adalah simetris. Yaitu:

A LEFT JOIN B = B RIGHT JOIN A

RIGHT JOIN hanyalah gula sintaksis. Pengoptimal dapat menulis ulang gabungan kanan menjadi gabungan kiri:

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)

Perhatikan LEFT JOIN dalam penulisan ulang pengoptimal (tabel ditukar):

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) 

Perhatikan bahwa (A RIGHT JOIN B !=A LEFT JOIN B) kecuali (A INNER JOIN B =A LEFT JOIN B). Hal ini karena A RIGHT JOIN B tidak simetris dengan A LEFT JOIN B (simetris dengan B LEFT JOIN A).

Dalam kasus Anda, A RIGHT JOIN B akan sama dengan A LEFT JOIN B kecuali ada nilai NULL di kolom yang Anda ikuti. Jika ada nilai NULL, maka A LEFT JOIN B TIDAK akan sama dengan A RIGHT JOIN B. Jika Anda menambahkan artikel baru tanpa menambahkan newsgroup terkait (atau sebaliknya) maka hasilnya juga akan berubah.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysqladmin:koneksi ke server di 'localhost' gagal

  2. Membuat array menggunakan php rekursif dari mysql

  3. Bagaimana MySQL Menyimpan Enum?

  4. SQL Query untuk menunjukkan tanggal terdekat?

  5. Seberapa akurat saya harus menyimpan garis lintang dan garis bujur?