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

Apakah gabungan kiri bersifat komutatif? Apa saja sifat-sifatnya?

Wikipedia:

"Dalam matematika, operasi biner adalah komutatif jika mengubah urutan operan tidak mengubah hasilnya. Ini adalah sifat dasar dari banyak operasi biner, dan banyak bukti matematika bergantung padanya."

Jawaban:

tidak, gabungan kiri tidak komutatif. Dan inner join adalah.

Tapi sebenarnya bukan itu yang Anda tanyakan.

Apakah pertanyaan berikut:

TableA INNER JOIN TableB LEFT JOIN TableC LEFT JOIN TableD

(semua bergabung ke kolom id) setara dengan:

TableA INNER JOIN TableB
       INNER JOIN TableC
        LEFT JOIN TableD   
UNION     
TableA INNER JOIN TableB
        LEFT JOIN TableC ON TableB.c_id IS NULL
        LEFT JOIN TableD    

Jawaban:

Juga tidak. Serikat dan bergabung tidak benar-benar mencapai hal yang sama, secara umum. Dalam beberapa kasus Anda mungkin dapat menulisnya secara setara, tetapi saya tidak berpikir begitu umum pseudo sql yang Anda tunjukkan. Konstitusi ON sepertinya seharusnya tidak berfungsi (mungkin sesuatu yang saya tidak tahu di MySQL?)

Berikut adalah kumpulan kueri yang disederhanakan yang menurut saya akan setara.

SELECT * 
  FROM TableA a 
       LEFT JOIN 
       TableB b ON a.id = b.id_a 

SELECT * 
  FROM TableA a 
       INNER JOIN 
       TableB b ON a.id = b.id_a 
UNION      
SELECT * 
  FROM TableA a  
       LEFT JOIN 
       TableB b ON a.id = b.id_a 
 WHERE TableB.id IS NULL

Sunting 2 :

Berikut contoh lain yang lebih dekat dengan Anda tetapi pada intinya sama.

SELECT * 
  FROM            TableA a 
       INNER JOIN TableB b ON a.id = b.id_a 
        LEFT JOIN TableC c ON b.id = c.id_b 

sama dengan

SELECT * 
  FROM TableA a 
       INNER JOIN TableB b ON a.id = b.id_a 
       INNER JOIN TableC c ON b.id = c.id_b 
UNION      
SELECT * 
  FROM TableA a  
       INNER JOIN TableB b ON a.id = b.id_a 
        LEFT JOIN TableC c ON b.id = c.id_b 
 WHERE TableC.id IS NULL

Tapi saya tetap jangan berpikir saya menjawab pertanyaan Anda yang sebenarnya.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masukkan kunci utama kenaikan otomatis ke tabel yang ada

  2. Migrasi PHP dari mysql_* ke mysqli_

  3. Kebalikan dari SQL LIKE '%value%'

  4. Pencarian Array SQL

  5. Array multidimensi untuk mengelompokkan Kategori dan subkategori