Apakah perbezaan antara mysql inner join dan outer join?
Jan 06, 2022 pm 02:50 PMPerbezaan 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.
Perbezaan
- Sambungan dalam: Keluarkan data yang sepadan dalam jadual sambungan dan jangan simpan data yang tidak sepadan
- Sambungan luar : Keluarkan data yang sepadan dalam jadual sambungan, dan data yang tidak sepadan akan dikekalkan nilainya ialah NULL
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)
gabungan dalam
- Contoh
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)
sambung luar
- sambung luar kiri (sambung luar kiri): Gunakan jadual pada kiri sebagai jadual utama
- Cantuman luar kanan (cantuman luar kanan): Gunakan jadual di sebelah kanan sebagai jadual utama
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!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Kemahiran pemprosesan struktur data besar PHP

Bagaimana untuk mengoptimumkan prestasi pertanyaan MySQL dalam PHP?

Bagaimana untuk menggunakan sandaran dan pemulihan MySQL dalam PHP?

Bagaimana untuk memasukkan data ke dalam jadual MySQL menggunakan PHP?

Apakah senario aplikasi jenis penghitungan Java dalam pangkalan data?

Bagaimana untuk membetulkan ralat mysql_native_password tidak dimuatkan pada MySQL 8.4

Bagaimana untuk menggunakan prosedur tersimpan MySQL dalam PHP?

Strategi pengoptimuman prestasi untuk halaman tatasusunan PHP
