首页 > 数据库 > mysql教程 > 如何使用 LEFT JOIN 检索默认设置和特定于字符的覆盖?

如何使用 LEFT JOIN 检索默认设置和特定于字符的覆盖?

Susan Sarandon
发布: 2025-01-22 07:42:09
原创
409 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板