我有兩個表,首先存儲公告,第二存儲讀取公告的用戶列表。我正試圖捕獲所有狀態爲已讀或未讀的通知。如果第二個表不包含與該announcement_id相對應的user_id行,則它是未讀的。下面是它的樣子MYSQL - 選擇所有不與其他表加入的行
公告
id | content | announce_on
1 | foo | 2016-11-10
2 | bar | 2016-11-11
3 | zim | 2016-11-12
公告閱覽次數
id | user_id | announcement_id
1 | 1 | 1
2 | 1 | 2
3 | 2 | 1
4 | 2 | 3
(用戶1已經閱讀公告1和2,用戶2已經閱讀公告1)
最好我到目前爲止的事情是
SELECT
*,
a.id AS annId
FROM
announcement a
LEFT JOIN
announcement_view_count avc
ON
avc.announcement_id = a.id
WHERE
a.announce_on <= CURRENT_DATE AND (avc.user_id = 1 OR avc.user_id IS NULL)
問題是我根本不會得到公告3。 avc.user_id IS NULL
部分不能正常工作。公告3沒有出現,因爲它已被用戶2查看。
這很難解釋,但我想加載所有通知並有一列可以告訴我該公告是否已被特定用戶查看過。 (誰的ID是可用的)。有人可以給我一個提示嗎?
我也試過不存在,但沒有,但他們返回空結果。
沒有人可以試試你的查詢,因爲你已經發布的表不匹配查詢 – e4c5
你的「最好的事情至今」正在爲你沒有在規定列名的引用你的描述。根據您提供的表格數據,日期與它有什麼關係。你需要告訴我們更多,還是你已經提供的,你的意圖?我只看到兩個表,每列有三列。 – TimBrownlaw
對不起。我不想包括不必要的專欄。請再次檢查 – VeeK