Join

連接查詢的 if else 語句

  • May 28, 2018

我正在使用 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

在這裡,我必須在andemail之間進行連接。accounts``professionals

如果account_id is not null我們得到email

如果account_id is null我們在 and 之間進行連接usersprofessionals我們確定 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;

引用自:https://dba.stackexchange.com/questions/208049