Rumah > pangkalan data > tutorial mysql > Cara Mendapatkan Data Padanan Merentasi Jadual dengan Cekap: Inner Join vs. Union?

Cara Mendapatkan Data Padanan Merentasi Jadual dengan Cekap: Inner Join vs. Union?

Susan Sarandon
Lepaskan: 2025-01-15 11:43:45
asal
664 orang telah melayarinya

How to Efficiently Retrieve Matching Data Across Tables: 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>
Salin selepas log masuk

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

Operasi

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan