求一SQL语句 关于按照论坛最新回复排序

zc5036 2009-10-23 03:03:36
如题,表是这样的:
表名bbs
id
title(标题)
content(内容)
father_id(回复的帖子对应主题的id,如果是主题则为空)
layer(为0时表示这是新主题,为1时表示为回复的帖子)
adddate(添加的时间)
...全文
129 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ymqdcpy 2009-11-05
  • 打赏
  • 举报
回复
select a.*,b.* from bbs a left join bbs b where a.id = b.parent_id and a.parent_id = null and not b.parent_id=null order by a.adddate,b.adddate desc

不知道这样行不行..
zc5036 2009-10-23
  • 打赏
  • 举报
回复
Select *, adddate=(select isnull(max(b.adddate),max(a.adddate)) from bbs a left join bbs b on a.id=b.father_id where a.id=t.id) From bbs t Where layer=1 Order By adddate Desc

原来的语句是这样的,但是有个问题就是,列表显示时所有的时间都是第一个时间
zc5036 2009-10-23
  • 打赏
  • 举报
回复
我在解释清楚一点吧
我想首先要判断出layer=0把 先把所有的主题选出来 再比较发帖的时间,如果这个主题还没有回复,那么时间可定就是发这个主题的时间,如果这个主题有了回复,那么应该取出最新回复的时间
残剑无弦 2009-10-23
  • 打赏
  • 举报
回复
ACCESS:"select * from bbs GROUP BY father_id order by max(adddate)"

在ASP语句需要注意一下:
if(rs("layer")=1) then id=rs("father_id")

思路上是这样 对不对我还没有试过
zc5036 2009-10-23
  • 打赏
  • 举报
回复
按最新回复排序,一个主题只显示一次啊,楼上的显然不对啊
lzp4881 2009-10-23
  • 打赏
  • 举报
回复
select * from bbs order by layer desc,adddate desc
zuoshouaini 2009-10-23
  • 打赏
  • 举报
回复
select* from bbs where layer in(select layer from bbs where layer=1) order by adddate
照你的说法应该是这样的

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧