使用過濾後的左側表進行左連接
這個問題討論了從兩個表中檢索資料的問題,其中左側表中的 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中文網其他相關文章!