概述
项目中有两个表一个公告已读表,另一个公告表,要求查询某个人的公告未读数
解决
公告表
公告已读表
没有一个字段是标识未读的,怎么办呐?
能想到的是左连接和右连接,获得两张表的数据,在获得了两张表的数据之后,可能可以根据某些null值将数据查询出来
尝试了如下代码:
select t.*,r.*
from t_notice t
left join t_notice_read r on r.noticeId = t.id and r.userId = 1
where t.delete_status = '0'
可以看到,如果文章已经读过,那么noticeId和userId值会存在,那么未读过noticeId和userId将不存在,所以,也就有思路了,userId或noticeId为null,则该文章为用户未读文章,这样用户的未读文章也就统计出来了
完整代码如下:
select count(1)
from t_notice t
left join t_notice_read r on r.noticeId = t.id and r.userId = 1
where t.delete_status = '0' and r.userId is null
ok,完事