我是發送通知消息給多個設備。 用戶可以從多個設備登錄。我有單獨的表,它維護每個用戶的設備ID。當我發送通知時,我會在message_data中添加用戶標識,消息等。,我會在每個用戶設備的message_status表中添加一個條目。用於統計用戶未讀消息的MySQL查詢
這樣我就可以維護每個設備通知發送狀態和錯誤。
message_data
id INT
userid VARCHAR
message VARCHAR
sent_time DATETIME
language TINYINT
message_status
id INT
data_id INT
device_id VARCHAR
device_type TINYINT
sent_time DATETIME
status TINYINT
error_code TINYINT (If there is any error, we will have the error code here)
我想獲取每個用戶的未讀通知消息數。狀態字段0表示該設備的消息尚未被用戶讀取。如果它是1,則用戶已閱讀該消息。
用戶可以從多個設備登錄,如果用戶在至少一個設備上讀取該消息,則應該視爲通知消息被讀取。
如果用戶在任何設備上未讀取通知消息,則需要將其視爲未讀消息。
如何識別未讀通知消息數的用戶?對此有何想法?
您需要查看是否有另一個status = 1的message_status,因此,對於WHERE device_id = AND status = '使用JOIN或NOT EXISTS。 –
mroman
@mroman我需要通過userid獲取未讀郵件數。用戶可以有許多註冊的設備。 – Muthu
是'user_id'唯一嗎? – Fabio