Join
連接查詢的 if else 語句
我正在使用 Postgresql 數據庫
有兩張桌子:專業人士
$$ professional_id,user_id,account_id $$ 使用者
$$ user_id email $$ 帳戶
$$ account_id email $$ 專業人士
[professional_id,user_id,account_id] 1, 2000, null 2, 3000, 120 3, 4000, 155
使用者
[user_id, email] 2000, mike@gmail.com 3000, joe@gmail.com 4000, jack@gmail.com
帳戶
[account_id , email] 120, maria@gmail.com 155, travis@gmail.com
在這裡,我必須在and
accounts``professionals
如果
account_id is not null
我們得到如果
account_id is null
我們在 and 之間進行連接users
(professionals
我們確定 user_id 始終不為空)這是我所做的:
select email from professionals IF (u.id=m.user2ID) left JOIN accounts ON accounts.account_id = professionals.account_id ELSE LEFT JOIN users ON users.user_id = professionals.user_id;
確實感謝您的幫助
未經測試 - 您沒有提供任何 DDL 或範例數據腳本… IF 是一個流控制結構,用於確定將執行哪個語句塊。您需要的是條件表達式。在您的情況下,該
COALESCE
函式應該可以解決問題,還要查看CASE
非空條件謂詞。SELECT COALESCE(accounts.email, professionals.email) AS Email FROM professionals LEFT JOIN accounts ON accounts.account_id = professionals.account_id LEFT JOIN users ON users.user_id = professionals.user_id;