假設您需要從「settings」表中檢索預設設置,但還需要包含被覆蓋的角色設定。但是,您現有的查詢只檢索明確設定角色的設置,不包括預設值。
為了解決這個問題,我們可以修改查詢以獲得所需的結果。我們不會透過 WHERE 子句進行過濾(這會排除左連接失敗的行),而是將條件移到連接本身:
<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>
透過將條件移到連線中,我們確保只有在存在特定於角色的設定時,左連線才會成功,如果尚未覆蓋,則仍然保留預設設定。這將產生所需的結果:
<code class="language-php">array( '0' => array('somekey' => 'keyname', 'value' => 'thevalue'), '1' => array('somekey2' => 'keyname2'), '2' => array('somekey3' => 'keyname3') )</code>
其中鍵 1 和 2 代表預設值,鍵 0 包含以特定於角色的值增強的預設值。
以上是如何使用 LEFT JOIN 檢索預設設定和特定於字元的覆蓋?的詳細內容。更多資訊請關注PHP中文網其他相關文章!