[英]sql left join: always return left table columns, no matter the condition
我有兩個桌子:
該表使用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 |
我正在使用屬性包模式設計來存儲我們應用程序的用戶設置! 它將包括通知設置,電子郵件設置等...
即使在其中添加where語句(那里的where語句用於通過user_id查詢account_settings),是否有可能始終返回settings
列的查詢?
我正在嘗試獲取帳戶海關設置以及默認值和標簽的左加入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條件,並加入條件條件
select account_settings.*, settings.* from settings
LEFT JOIN account_settings
ON settings.id = account_settings.id and account_settings.user_id = 'UUID_HERE';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.