文章目录
1 摘要
2 解决方案
3 思考
1 摘要
在上一篇博客中介绍了如何设计一个具有用户已读功能的公告,博客链接如下:
具有用户已读状态功能的公告(1):数据库设计
本以为就是加一个中间表的事,没想到在后续实现具体功能的时候还是遇到了不少的坑?其中就有一个:
当用户查询公告列表的时候,如何在返回结果中包含每一条的读取状态?
2 解决方案
这个问题看似简单,但是实际操作起来还是有些坑的。有人可能会想:
先把所有的公告查出来,然后再去比对比公告用户关联表,如果有记录,则将这一条公告标记为已读,否则就是未读。
这种方案可以实现功能,但是工作量大,首先,你需要查询一次数据库,获取一个公告列表,然后你需要将每一条公告列表放到公告用户关联表中进行查询,这样就会产生大量的数据库查询,对数据库的压力较大,不可取
能否一条 SQL,就可以直接返回公告列表,同时包含每条公告对于某个用户的已读状态?
这么想好像时可以的,那么,怎么写这一条SQL呢?
SQL 查询一:
-- 用户查询公告列表(包含已读状态)
本以为这条SQL就能实现想要的结果,但是已查询却发现只能查询到在公告关联表中有的数据,也就是已读的公告,这不满足要求SQL 查询二:
这条SQL可以实现上述功能,查询所有公告,同时返回每一条公告对某个用户的已读状态
总结: 这条SQL符合要求
3 思考
问题: 用户想要一键已读所有公告怎么办?
欲知答案,且看下回分解
————————————————感谢原创博主————————————————
版权声明:本文为CSDN博主「Flying9001」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Mrqiang9001/article/details/98340623