Dalam sambungan pangkalan data, selalunya perlu untuk menggabungkan data daripada berbilang jadual semasa menggunakan syarat penapis tertentu. Pertimbangkan senario berikut:
Anda mahu mendapatkan semula tetapan lalai daripada jadual settings
dan, jika perlu, tetapan khusus peranan daripada jadual character_settings
untuk peranan tertentu. Walau bagaimanapun, pertanyaan di bawah hanya mengembalikan lalai jika tetapan peranan sepadan dengan nilai tertentu dan mengabaikan lalai jika tiada tetapan peranan ditentukan:
<code class="language-sql">SELECT `settings`.*, `character_settings`.`value` FROM (`settings`) LEFT JOIN `character_settings` ON `character_settings`.`setting_id` = `settings`.`id` WHERE `character_settings`.`character_id` = '1' </code>
Untuk mendapatkan semula semua tetapan lalai dan mendapatkan tetapan peranan apabila tersedia, kami perlu mengalihkan syarat penapis ke klausa gabungan:
<code class="language-sql">SELECT `settings`.*, `character_settings`.`value` FROM `settings` LEFT JOIN `character_settings` ON `character_settings`.`setting_id` = `settings`.`id` AND `character_settings`.`character_id` = '1' </code>
Dengan meletakkan klausa WHERE
dalam syarat cantum, kami menyatakan bahawa hanya baris yang mana gabungan kiri berjaya akan disertakan dalam set hasil. Ini membolehkan kami mendapatkan semula tetapan lalai sementara masih mengambil kira kemungkinan tetapan khusus peranan.
Atas ialah kandungan terperinci Bagaimana untuk Melakukan Gabungan Kiri dengan Penapisan Bersyarat dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!