read_log (阅读记录)
contract_id:合同id
user_id:阅读会员
contract (合同表)
id:合同id
获取未读的合同列表
SELECT c.id
FROM contract c
LEFT JOIN read_log rl ON c.id = rl.contract_id
WHERE rl.contract_id IS NULL;
解释:
contract 表: 包含所有合同的记录。
read_log 表: 包含用户已经阅读过的合同记录。
LEFT JOIN: 保留 contract 表中的所有记录,即使在 read_log 中没有对应的记录。
WHERE rl.contract_id IS NULL: 只返回那些在 read_log 中没有出现的合同 ID,也就是未被阅读的合同。
如果有特定的用户阅读记录(例如按用户过滤),你可以加上用户的条件:
SELECT c.id
FROM contract c
LEFT JOIN read_log rl ON c.id = rl.contract_id AND rl.user_id = [USER_ID]
WHERE rl.contract_id IS NULL;