首頁 > 資料庫 > mysql教程 > 如何正確地左連接過濾後的右手錶以檢索所有預設設定和可選的自訂設定?

如何正確地左連接過濾後的右手錶以檢索所有預設設定和可選的自訂設定?

Mary-Kate Olsen
發布: 2025-01-22 08:04:15
原創
815 人瀏覽過

How to Properly Left Join with a Filtered Right-Hand Table to Retrieve All Default Settings and Optional Custom Settings?

使用過濾後的左側表進行左連接

這個問題討論了從兩個表中檢索資料的問題,其中左側表中的 WHERE 子句阻止了預期結果的出現。目標是從設定表中檢索所有預設設置,如果可用,則為特定角色檢索任何特定於角色的自訂設定。

原始查詢:

SELECT `settings`.*, `character_settings`.`value`
FROM (`settings`)
LEFT JOIN `character_settings` 
ON `character_settings`.`setting_id` = `settings`.`id`
WHERE `character_settings`.`character_id` = '1'  
登入後複製

但是,此查詢僅傳回為指定角色(character_id = 1)存在符合的特定於角色的設定的行。為了包含預設設定(即使不存在特定於角色的設定),應將 WHERE 子句移至連接本身:

SELECT  `settings`.*, `character_settings`.`value`
FROM    `settings`
LEFT JOIN 
       `character_settings` 
ON     `character_settings`.`setting_id` = `settings`.`id`
        AND `character_settings`.`character_id` = '1'  
登入後複製

此修改後的查詢現在有效地執行左連接,其中左側表(settings)不受任何條件過濾。因此,它會檢索所有預設設置,同時如果存在任何特定於角色的設置,則可以選擇性地包含這些設定。

以上是如何正確地左連接過濾後的右手錶以檢索所有預設設定和可選的自訂設定?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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