SQL连接查询问题

有一个消息详情表:

`id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) NOT NULL DEFAULT '-1' COMMENT '消息归属user_id,若为0表示广播消息',
  `biz_id` bigint(20) NOT NULL COMMENT '发送业务方',
  `title` varchar(128) NOT NULL DEFAULT '' COMMENT '标题',
  `content` varchar(512) NOT NULL DEFAULT '' COMMENT '内容',
  `link` varchar(256) NOT NULL DEFAULT '' COMMENT '点击跳转链接',

一个消息发送方表:

`id` bigint(20) NOT NULL AUTO_INCREMENT,
  `keep_amount` int(11) NOT NULL DEFAULT '0' COMMENT '业务方的单用户消息保留条数,0表示无限制,1表示单用户该业务方只能看到一条消息',
  `show_priority` int(11) NOT NULL DEFAULT '0' COMMENT '消息在钱包首页展示优先级,值越小表示消息优先级越高,优先级相等则按照发送时间排序',
  `create_time` bigint(20) NOT NULL DEFAULT '0' COMMENT '创建发送方时间',
  `update_time` bigint(20) NOT NULL DEFAULT '0' COMMENT '更新发送方时间',

查询逻辑:查询指定用户的消息列表,对于有业务方消息数量限制的,取最新的前n条(keep_amount),如1号用户有十条消息,五条A业务方发送的,五条B业务方发送的,B业务方限制用户只能看到最新一条消息。于是查询结果为五条A业务方发送的消息,1条B业务方发送的消息。

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