如何实现 “某人指定隐藏某一条数据,不影响其他人”?

1.有一个公共数据表,所有用户都可以查看
2.所有用户都可以选择隐藏任意一条记录,(仅那个用户)以后查询不显示该条记录,但不影响其他人
怎么实现比较好?
再使用一个表记录吗?
感谢大佬们的回答~

阅读 2.9k
5 个回答

 加一个隐藏的表 record_hide 字段 user record_id

select * from record r left join record_hide h left join r.id != h.record_id where h.user = $user_id

恩,id, user_id, record_id, created_at
查询的时候可以left join,为null的就显示出来

这个可以放到cache里面,做永久缓存,做成黑名单的形式
user_id 作为key值 ,value 则是一个或者多个隐藏的记录ID
每次展示给用户的时候 查看当前列表ID是否在黑名单,在就释放掉。
也可以单独放表记录,但是cache的效率比db高的多.

再用一张表这是肯定的总得有地方存储吧
可以联表查或者查询前先将用户隐藏的记录ID查出来, where中再通过<>{id}查询

加个flag字段是最方便的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题