首頁 > 資料庫 > mysql教程 > 如何使用 LEFT JOIN 檢索預設設定和特定於字元的覆蓋?

如何使用 LEFT JOIN 檢索預設設定和特定於字元的覆蓋?

Susan Sarandon
發布: 2025-01-22 07:42:09
原創
452 人瀏覽過

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

使用擴充 WHERE 子句的 LEFT JOIN

假設您需要從「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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板