在資料庫連接中,經常需要結合多個表的數據,同時套用某些過濾條件。考慮以下場景:
您想要從settings
表中檢索預設設置,並根據需要為特定角色從character_settings
表中檢索特定角色的設定。但是,下面的查詢只返回角色設定與特定值匹配的預設設置,如果未定義角色設置,則忽略預設設定:
<code class="language-sql">SELECT `settings`.*, `character_settings`.`value` FROM (`settings`) LEFT JOIN `character_settings` ON `character_settings`.`setting_id` = `settings`.`id` WHERE `character_settings`.`character_id` = '1' </code>
為了檢索所有預設設置,並在可用時獲取角色設置,我們需要將過濾條件移動到連接子句:
<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>
將WHERE
子句放在連接條件中,我們指定只有左連接成功的行才會包含在結果集中。這允許我們檢索預設設置,同時仍然考慮角色特定設置的可能性。
以上是如何在 SQL 中執行帶有條件過濾的左連線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!