2015-09-04 59 views
0

例如,我有一個帖子表和一個用戶表。Postgres:選擇左側加入記錄的記錄,全部不符合特定條件

用戶了,:POST_ID,:USER_ID,:published_date,:身體

我想要做的是,從來沒有設置published_date在任何崗位中選擇用戶。

我在想入手的用戶,然後左加入的職位表,但林不知道在我的where子句中放什麼東西,因爲它需要對挑選出的用戶,他們的所有帖子沒有出版日期

+2

如果你給你的表更詳細的DDL它會更容易幫助你。但是你明白了,你必須做一個從'users'到'posts'表的左外部連接,並且從這個連接中選擇只有'users'沒有'published_date'的空值。 – Houari

回答

0
select user_id 
from t 
group by user_id 
having bool_and(published_date is null) 

bool_and

bool_and(expression) - true如果所有輸入值都爲真,否則false

+0

雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的重要部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 –

+0

@CoryCharlton這裏有一個完整和正確的答案。請閱讀答案,而不是爭奪修訂信譽。 –

+0

有一個代碼示例和一個可能在未來黑暗的鏈接。這不是一個好的答案恕我直言... –

-1

如何大約類似於:

SELECT user.user_id 
FROM user 
LEFT JOIN post ON post.user_id=user.user_id AND post.published_date IS NOT NULL 
WHERE post.post_id IS NULL 

您將每個用戶與他的發佈日期匹配的帖子進行匹配。如果沒有,則左連接將返回空值以用於發佈表中的匹配(即使對於不應該爲NULL的列,例如post_id主鍵)。你在你的WHERE子句中使用這個來只返回沒有匹配的行。

+0

你說什麼沒有意義 –

+1

請解釋一下你自己並嘗試查詢。左連接/其中NULL是經典模式。如果我的解釋不容易理解,我很抱歉,但我認爲這是「毫無意義」,這相當誇張。 – personne3000