gpt4 book ai didi

mysql - sql left join : always return left table columns, 无论条件如何

转载 作者:行者123 更新时间:2023-11-29 14:09:54 24 4
gpt4 key购买 nike

我有两个表:

账户设置

此表使用 settings.id 字段作为 FK 来存储用户自定义设置(下面的设置表有设置的名称和默认值)

    Column    |           Type           |                           Modifiers
--------------+--------------------------+---------------------------------------------------------------
id | integer | not null default nextval('account_settings_id_seq'::regclass)
user_id | uuid | not null
setting_id | integer | not null
value | text |

设置:

此表包含所有可用设置。例如 weekly_email、app_notifications、block_user 等...它还保存了它们每个的默认值。

     Column     |           Type           |                       Modifiers
----------------+--------------------------+-------------------------------------------------------
id | integer | not null default nextval('settings_id_seq'::regclass)
key | text | not null
frontend_label | text |
default_value | text |

我正在使用属性包架构设计来存储我们应用的用户设置!它将包括通知设置、电子邮件设置等...

是否可以有一个始终返回 settings 列的查询,即使您在其中添加了 where 语句(where 语句用于通过 user_id 查询 account_settings)?

我正在尝试获取帐户自定义设置,以及 LEFT JOIN 默认值和标签的 settings 表。

这是我现在拥有的:

select account_settings.*, settings.* from settings 
LEFT JOIN account_settings
ON settings.id = account_settings.id
where account_settings.user_id = 'UUID_HERE';

虽然这不会返回设置表值!如果在 account_settings.setting_id 列中引用了 settings.id 列,它只会返回设置值。

最佳答案

移除你的 where 条件,把它放在 join on 条件下

 select account_settings.*, settings.* from settings 
LEFT JOIN account_settings
ON settings.id = account_settings.id and account_settings.user_id = 'UUID_HERE';

关于mysql - sql left join : always return left table columns, 无论条件如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43177155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com