首頁 >資料庫 >mysql教程 >如何使用左連接有效檢索預設和特定於字元的設定?

如何使用左連接有效檢索預設和特定於字元的設定?

Barbara Streisand
Barbara Streisand原創
2025-01-22 07:56:10967瀏覽

How Can I Efficiently Retrieve Default and Character-Specific Settings Using a Left Join?

使用 WHERE 子句的 Left Join:取得預設設定和角色特定設定

應用程式查詢需要從 'settings' 表中檢索預設設置,並在存在的情況下從 'character_settings' 表中捕獲角色特定設定。但是,目前查詢僅傳回角色 ID 為 1 的設置,而缺少預設設定。

最初的查詢嘗試使用 WHERE 子句來過濾存在角色 ID 的設定:

<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>

但是,這會過濾掉左連接不匹配的行,從而刪除所需的預設設定。

解:

為了解決這個問題,將 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">$result = array();
foreach ($result_set as $row) {
    $result[$row['key']] = $row['value'];
}</code>

以上是如何使用左連接有效檢索預設和特定於字元的設定?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn