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
Lepaskan: 2025-01-22 07:42:09
asal
476 orang telah melayarinya

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:

SELECT  `settings`.*, `character_settings`.`value`
FROM    `settings`
LEFT JOIN 
       `character_settings` 
ON     `character_settings`.`setting_id` = `settings`.`id`
        AND `character_settings`.`character_id` = '1'  
Salin selepas log masuk

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:

array(
    '0' => array('somekey' => 'keyname', 'value' => 'thevalue'),
    '1' => array('somekey2' => 'keyname2'),
    '2' => array('somekey3' => 'keyname3')
)
Salin selepas log masuk

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