Table ins_post_reply
reply_id(int),  send_id(int),        reply_user_id(int),     reply_date Timestamp回帖ID           帖子ID(外键)           回帖用户ID(外键)         回帖时间
一句SQL 查询每个帖子的回帖个数、最后回帖时间、最后回帖人   

解决方案 »

  1.   


    select a.send_id, b.reply_count, c.回帖时间, c.回帖人 from tb_帖子 a,
    (select b.send_id, count(b.reply_id) as reply_count from tb_回帖 group by send_id) b,
    (select reply_id, send_id, 回帖时间, 回帖人 from tb_回帖 
           where reply_id in (select max(reply_id) from tb_回帖 group by send_id)) c
    where a.send_id = b.send_id(+) and a.send_id = c.send_id(+)
    这是ORACLE的数据库,tb_帖子代表存放帖子的数据表,tb_回帖代表存放回帖的数据表。其中C的in执行起来估计会比较慢,还可以替换另一种写法,一时没想起来
      

  2.   


    select x.reply_id, x.send_id, x.回帖时间, x.回帖人 
       from tb_回帖 x, (select max(reply_id) as reply_id from tb_回帖 group by send_id) y
       where x.reply_id = y.reply_id
    C部分可以这么替换,效率应该会好一些