现在有一个需求,先上效果图:
1:
2:
需求:智能手机的信息显示模式一般都箱体和对话模式两种,上图显示的即对话模式的形式。在信息列表页面,只显示用户发送的最新(时间)记录,比如10086给你发了9条信息,显示的应该是最后发送给你的那条,或者你最后回复10086的最后一条;
现有数据库表如下:CREATE TABLE `t_message` (
  `message_id` int(11) NOT NULL,
  `content` varchar(500) NOT NULL COMMENT '发送站内信内容',
  `send_user_id` varchar(36) DEFAULT NULL COMMENT '发件人ID',
  `send_user_name` varchar(20) DEFAULT NULL COMMENT '发件人姓名',
  `receive_user_id` varchar(36) DEFAULT NULL COMMENT '收件人ID',
  `receive_user_name` varchar(20) DEFAULT NULL COMMENT '收件人姓名',
  `send_datetime` datetime DEFAULT NULL COMMENT '发送时间',
  `send_delete` int(11) DEFAULT NULL COMMENT '发送方是否删除(0未删除,1删除)',
  `receive_delete` int(11) DEFAULT NULL COMMENT '接收方是否删除(0未删除,1删除)',
  `read_status` int(11) DEFAULT NULL COMMENT '读取状态(0未读,1已读)',
  PRIMARY KEY (`message_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;sql测试表(含数据):http://pan.baidu.com/share/link?shareid=391891&uk=1191752015请教各位大神,信息列表页面的sql该如何写呢,如果做过类似功能的,帮忙解决下吧,不胜感激。sqlandroid

解决方案 »

  1.   

    原理就是,查出最近的几条数据,我们能用order by input desc
    再关联一个用户号即可
    select content from t_message order by send_datetime desc
      

  2.   

    select * from `t_message` a where not exists(
    select 1 from `t_message` whre a.`receive_user_id`=`receive_user_id`
    and a.`send_datetime`<`send_datetime`)
      

  3.   

     这个send_datetime是未知的,请教如何这样写呢?大神是否明白需求上所说的,要是不太理解的话,小弟可以解释下的。
      

  4.   

    现在已知的字段只有send_user_id or receive_user_id,客户端是学生用的,通过学生的id来查询的,
      

  5.   

    参考下贴中的多种方法http://blog.csdn.net/acmain_chm/article/details/4126306
    [征集]分组取最大N条记录方法征集,及散分....