例如,我有一個帖子表和一個用戶表。Postgres:選擇左側加入記錄的記錄,全部不符合特定條件
用戶了,:POST_ID,:USER_ID,:published_date,:身體
我想要做的是,從來沒有設置published_date在任何崗位中選擇用戶。
我在想入手的用戶,然後左加入的職位表,但林不知道在我的where子句中放什麼東西,因爲它需要對挑選出的用戶,他們的所有帖子沒有出版日期
例如,我有一個帖子表和一個用戶表。Postgres:選擇左側加入記錄的記錄,全部不符合特定條件
用戶了,:POST_ID,:USER_ID,:published_date,:身體
我想要做的是,從來沒有設置published_date在任何崗位中選擇用戶。
我在想入手的用戶,然後左加入的職位表,但林不知道在我的where子句中放什麼東西,因爲它需要對挑選出的用戶,他們的所有帖子沒有出版日期
select user_id
from t
group by user_id
having bool_and(published_date is null)
bool_and(expression)
-true
如果所有輸入值都爲真,否則false
雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的重要部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 –
@CoryCharlton這裏有一個完整和正確的答案。請閱讀答案,而不是爭奪修訂信譽。 –
有一個代碼示例和一個可能在未來黑暗的鏈接。這不是一個好的答案恕我直言... –
如何大約類似於:
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子句中使用這個來只返回沒有匹配的行。
你說什麼沒有意義 –
請解釋一下你自己並嘗試查詢。左連接/其中NULL是經典模式。如果我的解釋不容易理解,我很抱歉,但我認爲這是「毫無意義」,這相當誇張。 – personne3000
如果你給你的表更詳細的DDL它會更容易幫助你。但是你明白了,你必須做一個從'users'到'posts'表的左外部連接,並且從這個連接中選擇只有'users'沒有'published_date'的空值。 – Houari