sql left join:无论条件如何,总是返回左表列

时间:2017-04-03 05:34:59

标签: mysql sql postgresql database-design

我有两张桌子:

ACCOUNT_SETTINGS

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

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

设置:

此表包含所有可用设置。例如every_email,app_notifications,block_user等...它还保留了每个的默认值。

settings

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

是否可以使用始终返回settings列的查询,即使在那里添加where语句(where语句用于通过user_id查询account_settings)?

我试图获取帐户海关设置,以及LEFT JOIN select account_settings.*, settings.* from settings LEFT JOIN account_settings ON settings.id = account_settings.id where account_settings.user_id = 'UUID_HERE'; 表格中的默认值&标签

以下是我现在所拥有的:

pandas

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

1 个答案:

答案 0 :(得分:4)

删除你在条件

加入的条件
 select account_settings.*, settings.* from settings 
    LEFT JOIN account_settings 
    ON settings.id = account_settings.id and account_settings.user_id = 'UUID_HERE';