具有用户已读状态功能的公告(2):用户查询公告列表,同时包含读取状态

文章目录

1 摘要

2 解决方案

3 思考


1 摘要

在上一篇博客中介绍了如何设计一个具有用户已读功能的公告,博客链接如下:

具有用户已读状态功能的公告(1):数据库设计

本以为就是加一个中间表的事,没想到在后续实现具体功能的时候还是遇到了不少的坑?其中就有一个:

当用户查询公告列表的时候,如何在返回结果中包含每一条的读取状态?

2 解决方案

这个问题看似简单,但是实际操作起来还是有些坑的。有人可能会想:

先把所有的公告查出来,然后再去比对比公告用户关联表,如果有记录,则将这一条公告标记为已读,否则就是未读。

这种方案可以实现功能,但是工作量大,首先,你需要查询一次数据库,获取一个公告列表,然后你需要将每一条公告列表放到公告用户关联表中进行查询,这样就会产生大量的数据库查询,对数据库的压力较大,不可取

能否一条 SQL,就可以直接返回公告列表,同时包含每条公告对于某个用户的已读状态?

这么想好像时可以的,那么,怎么写这一条SQL呢?

SQL 查询一:

-- 用户查询公告列表(包含已读状态)


本以为这条SQL就能实现想要的结果,但是已查询却发现只能查询到在公告关联表中有的数据,也就是已读的公告,这不满足要求SQL 查询二:

这条SQL可以实现上述功能,查询所有公告,同时返回每一条公告对某个用户的已读状态

总结: 这条SQL符合要求

3 思考

问题: 用户想要一键已读所有公告怎么办?

欲知答案,且看下回分解

具有用户已读状态功能的公告(3):一键已读所有公告

————————————————感谢原创博主————————————————

版权声明:本文为CSDN博主「Flying9001」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/Mrqiang9001/article/details/98340623

你可能感兴趣的:(具有用户已读状态功能的公告(2):用户查询公告列表,同时包含读取状态)