Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Dapatkan Tetapan Lalai dan Penggantian Khusus Karakter Menggunakan LEFT JOIN?

Bagaimanakah Saya Boleh Dapatkan Tetapan Lalai dan Penggantian Khusus Karakter Menggunakan LEFT JOIN?

Susan Sarandon
Susan Sarandonasal
2025-01-22 07:42:09476semak imbas

How Can I Retrieve Default Settings and Character-Specific Overrides Using a LEFT JOIN?

KIRI SERTAI menggunakan klausa WHERE lanjutan

Andaikan anda perlu mendapatkan semula tetapan lalai daripada jadual "tetapan", tetapi juga perlu memasukkan tetapan peranan yang diganti. Walau bagaimanapun, pertanyaan sedia ada anda hanya mendapatkan semula tetapan yang menetapkan peranan secara eksplisit, tidak termasuk nilai lalai.

Untuk menyelesaikan masalah ini, kami boleh mengubah suai pertanyaan untuk mendapatkan hasil yang diingini. Daripada menapis melalui klausa WHERE (yang akan mengecualikan baris di mana gabungan kiri gagal), kami mengalihkan syarat ke cantuman itu sendiri:

<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 mengalihkan syarat ke dalam cantuman, kami memastikan bahawa cantuman kiri hanya akan berjaya jika tetapan khusus peranan hadir dan jika ia belum ditindih, tetapan lalai masih akan dikekalkan. Ini akan menghasilkan hasil yang diingini:

<code class="language-php">array(
    '0' => array('somekey' => 'keyname', 'value' => 'thevalue'),
    '1' => array('somekey2' => 'keyname2'),
    '2' => array('somekey3' => 'keyname3')
)</code>

Jika kunci 1 dan 2 mewakili nilai lalai, kunci 0 mengandungi nilai lalai yang dipertingkatkan dengan nilai khusus peranan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan Tetapan Lalai dan Penggantian Khusus Karakter Menggunakan LEFT JOIN?. 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