问一个sql的写法

christinadingkou 2006-11-23 05:21:27
表tbl,存放bbs里的帖子
字段:
fld_id,帖子编号
fld_pid,父帖编号,如果是父帖则此字段值=0
fld_body,帖子内容
fld_createtime,发帖时间

一个父帖可以有多个子帖,
确认父帖的方法是,fld_pid=0,
确认父帖和子帖关系的方法是:a记录的fld_pid = b记录的fld_id,则b是a的父帖.

我现在想得到一个结果集,全部都是父帖,并且按照它的最新子帖的发布时间降序排列

例如:
fld_id,fld_pid,fld_body,fld_createtime
1 0 1 2006-01-02
2 0 2 2006-01-01
3 1 3 2006-01-03
4 1 4 2006-01-04
5 2 5 2006-01-05
6 2 6 2006-01-06

则得到的结果集是:
fld_id,fld_body
2 2
1 1

关键是得按照子帖的发布时间排序,谢谢高人指点~~~



...全文
174 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
christinadingkou 2006-11-24
  • 打赏
  • 举报
回复
谢谢
小李木耳 2006-11-23
  • 打赏
  • 举报
回复
修正一点:
select a.fld_id, fld_body
----->
select a.fld_id, a.fld_body
小李木耳 2006-11-23
  • 打赏
  • 举报
回复
试试:
--子帖的最大时间sql:
select t1.fld_pid,max(t1.fld_createtime) as max_time
from tbl t1, tbl t2
where t1.fld_pid in (select distinct t2.fld_id from tbl t2)
group by t1.fld_pid

--楼主需要的sql:
select a.fld_id, fld_body
from tbl a, (select t1.fld_pid,max(t1.fld_createtime) as max_time
from tbl t1, tbl t2
where t1.fld_pid in (select distinct t2.fld_id from tbl t2)
group by t1.fld_pid) b
where a.fld_pid = 0 --父
and a.fld_id = b.fld_pid
order by b.max_time desc
christinadingkou 2006-11-23
  • 打赏
  • 举报
回复
自己up

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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