Rumah > Artikel > pangkalan data > Apakah perbezaan antara mysql inner join dan outer join?
Perbezaan antara sambungan dalam mysql dan sambungan luar: sambungan dalam akan mengeluarkan data padanan dalam jadual sambungan, dan data yang tidak dapat dipadankan tidak akan dikekalkan manakala sambungan luar akan mengeluarkan padanan data dalam jadual sambungan, dan data yang sepadan juga tidak akan dikekalkan, nilainya adalah NULL.
Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.
Contoh jadual
jadual pengguna
mysql> select * from users; +----+-------+ | id | name | +----+-------+ | 1 | john | | 2 | May | | 3 | Lucy | | 4 | Jack | | 5 | James | +----+-------+ 5 rows in set (0.00 sec)
jadual topik
mysql> select * from topics; +----+---------------------------------------+---------+ | id | title | user_id | +----+---------------------------------------+---------+ | 1 | Hello world | 1 | | 2 | PHP is the best language in the world | 2 | | 3 | Laravel artist | 6 | +----+---------------------------------------+---------+ 3 rows in set (0.00 sec)
mysql> select * from users as u inner join topics as t on u.id=t.user_id; +----+------+----+---------------------------------------+---------+ | id | name | id | title | user_id | +----+------+----+---------------------------------------+---------+ | 1 | john | 1 | Hello world | 1 | | 2 | May | 2 | PHP is the best language in the world | 2 | +----+------+----+---------------------------------------+---------+ 2 rows in set (0.00 sec)
dalaman boleh ditinggalkan, kerana Untuk menyamakan jadual, anda juga boleh tinggalkan
mysql> select * from users u join topics t on u.id=t.user_id; +----+------+----+---------------------------------------+---------+ | id | name | id | title | user_id | +----+------+----+---------------------------------------+---------+ | 1 | john | 1 | Hello world | 1 | | 2 | May | 2 | PHP is the best language in the world | 2 | +----+------+----+---------------------------------------+---------+ 2 rows in set (0.00 sec)
Kedua-dua ayat di atas adalah bersamaan dengan
mysql> select * from users,topics where users.id=topics.user_id; +----+------+----+---------------------------------------+---------+ | id | name | id | title | user_id | +----+------+----+---------------------------------------+---------+ | 1 | john | 1 | Hello world | 1 | | 2 | May | 2 | PHP is the best language in the world | 2 | +----+------+----+---------------------------------------+---------+ 2 rows in set (0.00 sec)
Gunakan jadual tertentu sebagai jadual Utama, lakukan berkaitan pertanyaan. Tidak kira sama ada ia boleh dikaitkan atau tidak, data jadual utama akan disimpan Jika ia tidak boleh dikaitkan, ia akan dipaparkan sebagai NULL
Penjelasan yang popular ialah: keluarkan dahulu semua data jadual utama, dan kemudian pergi ke Cari yang berkaitan sama ada terdapat mana-mana data yang memenuhi syarat perkaitan dalam jadual itu. Jika ada, ia akan dipaparkan seperti biasa, ia akan dipaparkan sebagai NULL
Contoh
mysql> select * from users as u left join topics as t on u.id=t.user_id; +----+-------+------+---------------------------------------+---------+ | id | name | id | title | user_id | +----+-------+------+---------------------------------------+---------+ | 1 | john | 1 | Hello world | 1 | | 2 | May | 2 | PHP is the best language in the world | 2 | | 3 | Lucy | NULL | NULL | NULL | | 4 | Jack | NULL | NULL | NULL | | 5 | James | NULL | NULL | NULL | +----+-------+------+---------------------------------------+---------+ 5 rows in set (0.00 sec)
adalah bersamaan dengan yang berikut, cuma medan Kedudukannya berbeza
mysql> select * from topics as t right join users as u on u.id=t.user_id; +------+---------------------------------------+---------+----+-------+ | id | title | user_id | id | name | +------+---------------------------------------+---------+----+-------+ | 1 | Hello world | 1 | 1 | john | | 2 | PHP is the best language in the world | 2 | 2 | May | | NULL | NULL | NULL | 3 | Lucy | | NULL | NULL | NULL | 4 | Jack | | NULL | NULL | NULL | 5 | James | +------+---------------------------------------+---------+----+-------+ 5 rows in set (0.00 sec)
Cambung luar kiri dan cantuman luar kanan adalah relatif digunakan sebagai jadual utama untuk persatuan
[Cadangan berkaitan:tutorial video mysql 】
Atas ialah kandungan terperinci Apakah perbezaan antara mysql inner join dan outer join?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!