Rumah >pangkalan data >tutorial mysql >Cara Mendapatkan Data Padanan Merentasi Jadual dengan Cekap: Inner Join vs. Union?
Membandingkan Gabungan Dalam dan Kesatuan untuk Padanan Data Merentas Jadual
Mendapatkan semula data yang sepadan merentas berbilang jadual selalunya memerlukan pertimbangan yang teliti terhadap kaedah pertanyaan pangkalan data. Artikel ini membezakan penggunaan INNER JOIN
dan UNION
untuk tugasan ini, memfokuskan pada senario yang paling berkesan.
INNER JOIN
lwn. UNION
INNER JOIN
: Operasi ini memautkan baris daripada dua atau lebih jadual berdasarkan nilai yang sepadan dalam lajur yang ditentukan. Set keputusan hanya mengandungi baris yang terdapat padanan dalam semua jadual yang digabungkan.UNION
: Ini menggabungkan set hasil dua atau lebih SELECT
pernyataan ke dalam set hasil tunggal, menghapuskan baris pendua. Adalah penting bahawa bilangan dan jenis data lajur dalam pernyataan gabungan adalah sama.Contoh Ilustrasi
Pertimbangkan dua jadual:
tbl_facilitators
: Mengandungi maklumat fasilitator.tbl_facilitatorClasses
: Mengandungi butiran kelas, termasuk ID fasilitator utama dan menengah.Objektifnya adalah untuk mendapatkan semula nama kelas dan nama pertama dan terakhir kedua-dua fasilitator rendah dan menengah untuk setiap kelas.
INNER JOIN
Penyelesaian
Pertanyaan berikut menggunakan INNER JOIN
untuk mencapai ini:
<code class="language-sql">SELECT tbl_facilitatorClasses.className, tbl_facilitators.facilLname AS primary_facilitator_lname, tbl_facilitators.facilFname AS primary_facilitator_fname, tbl_facilitators2.facilLname AS secondary_facilitator_lname, tbl_facilitators2.facilFname AS secondary_facilitator_fname FROM tbl_facilitatorClasses INNER JOIN tbl_facilitators ON tbl_facilitatorClasses.primeFacil = tbl_facilitators.facilID INNER JOIN tbl_facilitators AS tbl_facilitators2 ON tbl_facilitatorClasses.secondFacil = tbl_facilitators2.facilID;</code>
Pertanyaan ini digabungkan dengan cekap tbl_facilitatorClasses
dengan tbl_facilitators
dua kali (menggunakan alias untuk penyertaan kedua) untuk mendapatkan semula maklumat yang diperlukan untuk kedua-dua fasilitator utama dan menengah dalam satu hasil berstruktur.
UNION
Had
UNION
tidak sesuai untuk senario ini. UNION
memerlukan penstrukturan semula data dengan ketara, menghasilkan hasil yang kurang cekap dan kurang boleh dibaca serta tidak menyediakan struktur baris gabungan yang diingini untuk setiap kelas.
Kesimpulan
Untuk mendapatkan semula data berkaitan daripada berbilang jadual berdasarkan nilai lajur yang sepadan, seperti yang ditunjukkan dalam contoh ini, INNER JOIN
ialah pilihan yang jauh lebih sesuai dan cekap berbanding dengan UNION
. UNION
lebih sesuai untuk menggabungkan set hasil yang berbeza daripada pertanyaan serupa, bukan untuk menyertai data berdasarkan kekunci hubungan.
Atas ialah kandungan terperinci Cara Mendapatkan Data Padanan Merentasi Jadual dengan Cekap: Inner Join vs. Union?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!