[英]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'
,並在那里都是些錯誤的記錄name
從worker_detail
所以會返回NULL
的worker_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.