首页 > 数据库 > mysql教程 > 如何正确地左连接过滤后的右手表以检索所有默认设置和可选的自定义设置?

如何正确地左连接过滤后的右手表以检索所有默认设置和可选的自定义设置?

Mary-Kate Olsen
发布: 2025-01-22 08:04:15
原创
764 人浏览过

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

使用过滤后的左侧表进行左连接

这个问题讨论了从两个表中检索数据的问题,其中左侧表中的 WHERE 子句阻止了预期结果的出现。目标是从设置表中检索所有默认设置,如果可用,则为特定角色检索任何特定于角色的自定义设置。

原始查询:

<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>
登录后复制

但是,此查询仅返回为指定角色(character_id = 1)存在匹配的特定于角色的设置的行。为了包含默认设置(即使不存在特定于角色的设置),应将 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>
登录后复制

此修改后的查询现在有效地执行左连接,其中左侧表(settings)不受任何条件过滤。因此,它检索所有默认设置,同时如果存在任何特定于角色的设置,则可以选择性地包含这些设置。

以上是如何正确地左连接过滤后的右手表以检索所有默认设置和可选的自定义设置?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板