Rumah >pangkalan data >tutorial mysql >Bagaimana Menapis Jadual Sebelum Sertai Kiri dalam SQL?

Bagaimana Menapis Jadual Sebelum Sertai Kiri dalam SQL?

Patricia Arquette
Patricia Arquetteasal
2025-01-14 13:11:47265semak imbas

How to Filter a Table Before a Left Join in SQL?

Tapis jadual sebelum menyertai kiri

Dalam SQL, join tables ialah alat yang berkuasa untuk menggabungkan data daripada berbilang sumber data. Walau bagaimanapun, anda mungkin perlu menapis salah satu jadual sebelum melakukan operasi gabungan.

Andaikan anda mempunyai dua jadual: Pelanggan dan Kemasukan. Anda ingin mendapatkan semula semua rekod dalam jadual Pelanggan tidak kira sama ada mereka mempunyai entri yang sepadan dalam jadual Entri, tetapi hanya pelanggan dengan kategori "D" dalam jadual Entri.

Pertanyaan sertai kiri mudah kelihatan seperti ini:

<code class="language-sql">SELECT Customer.Customer, Customer.State, Entry.Entry
FROM Customer
LEFT JOIN Entry
ON Customer.Customer = Entry.Customer
WHERE Entry.Category = 'D'</code>

Walau bagaimanapun, pertanyaan ini akan mengecualikan pelanggan dengan ID "C" kerana mereka tidak mempunyai sebarang entri dengan kategori "D". Untuk memastikan semua rekod pelanggan disertakan, anda boleh mengalihkan penapis ke dalam syarat gabungan:

<code class="language-sql">SELECT c.Customer, c.State, e.Entry
FROM Customer c
LEFT JOIN Entry e
ON c.Customer = e.Customer
AND e.Category = 'D'</code>

Dengan meletakkan penapis di dalam keadaan sambung, anda boleh menapis jadual kemasukan dengan berkesan sebelum melakukan sambungan. Ini membolehkan anda mendapatkan semula semua pelanggan tanpa mengira sama ada mereka mempunyai entri yang sepadan dalam jadual entri, sementara masih hanya memasukkan entri dengan kategori "D" dalam keputusan.

Penyelesaian ini menyediakan cara yang fleksibel untuk mengawal data yang disertakan dalam hasil gabungan, membolehkan anda melakukan operasi data yang lebih tepat dan dioptimumkan.

Atas ialah kandungan terperinci Bagaimana Menapis Jadual Sebelum Sertai Kiri dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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