簡體   English   中英

postgresql JOIN有多個條件

[英]postgresql JOIN with multiple conditions

我有兩個postgres表:

worker_details_verification (verification_id BIGSERIAL, worker_id BIGINT, 
state TEXT, proofs TEXT[])
worker_details(worker_id BIGINT, name TEXT)

現在我想

    `verification_id, worker_id, proofs FROM` the table 
    `worker_details_verification`  

限制記錄`WHERE state ='Initial'

現在,除了上面的三列之外,我還希望來自worker_details表的name列,其中worker_id可用於查詢工作人員的姓名。

我嘗試了以下查詢,但沒有成功。

SELECT a.verification_id, a.worker_id, a.state, a.proofs, b.Name FROM 
worker_details_verification a FULL OUTER JOIN worker_details b ON 
a.worker_id = b.worker_id AND a.state = 'Initial';

它返回的記錄,甚至a.state不是'Initial' ,並在那里都是些錯誤的記錄nameworker_detail所以會返回NULLworker_details_verification列。

在我看來,您希望使用“向左/向右”,而不是“完全外部聯接”,因為您要從Worker_Details_Verification中查找數據,然后對其進行過濾,同時還要在適用時獲取Worker_Details。

我拿了這個:

SELECT a.verification_id, a.worker_id, a.state, a.proofs, b.Name 
FROM worker_details_verification a 
     FULL OUTER JOIN worker_details b ON a.worker_id = b.worker_id AND a.state = 'Initial';

並使其成為:

SELECT a.verification_id, a.worker_id, a.state, a.proofs, b.Name 
FROM worker_details_verification a 
     LEFT OUTER JOIN worker_details b ON a.worker_id = b.worker_id 
WHERE a.state = 'Initial';

你有這樣嘗試過嗎?

SELECT a.verification_id, a.worker_id, a.state, a.proofs, b.Name 
FROM worker_details_verification a 
INNER JOIN worker_details b ON a.worker_id = b.worker_id
WHERE a.state = 'Initial';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM