先排序,然后根据排序内联怎么做?比如……

chenlm 2003-01-10 09:51:51
有这么一个表 pnamabbs_pri

rootid orderstr content time
1 null 21331 2003-01-08 19:30:10
2 null asdad 2003-01-08 19:39:10
3 null 213 2003-01-08 19:41:11
2 z 12312 2003-01-08 19:40:41
1 z asdes 2003-01-08 19:48:10

我想达到的效果是:
select rootid,max(time) as newesttime from pnamabbs_pri group by rootid order by newesttime
这样就出现了

rootid newesttime
1 2003-01-08 19:48:10
3 2003-01-08 19:41:11
2 2003-01-08 19:40:41

然后根据上面得出的结果(一定要根据上面得出的结果的rootid的顺序)

得到
rootid orderstr content time
1 null 21331 2003-01-08 19:30:10
1 z asdes 2003-01-08 19:48:10
3 null 213 2003-01-08 19:41:11
2 null asdad 2003-01-08 19:39:10
2 z 12312 2003-01-08 19:40:41

功能就是树状结构的bbs帖子的提升问题
原来我想用上面得到的排序后的结果和原来的表内联,可以行不通阿
sql说:除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。
我该怎么办?
...全文
67 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lizongqi 2003-04-21
  • 打赏
  • 举报
回复
:)
chenlm 2003-01-10
  • 打赏
  • 举报
回复
谢谢2位高手~ok了~~~:)
愉快的登山者 2003-01-10
  • 打赏
  • 举报
回复
select rootid,max(time) as newesttime from pnamabbs_pri group by rootid order by newesttime
出现的是:
rootid newesttime
----------- ---------------------------
2 2003-01-08 19:40:41.000
3 2003-01-08 19:41:11.000
1 2003-01-08 19:48:10.000

(3 row(s) affected)

select rootid,max(time) as newesttime from pnamabbs_pri group by rootid order by newesttime desc
出现的是:
rootid newesttime
----------- ---------------------------
1 2003-01-08 19:48:10.000
3 2003-01-08 19:41:11.000
2 2003-01-08 19:40:41.000

(3 row(s) affected)
chenlm 2003-01-10
  • 打赏
  • 举报
回复
3x:)
hjhing 2003-01-10
  • 打赏
  • 举报
回复
select A.* from pnamabbs_pri as A left join (
select rootid,max(time) as MaxTime from pnamabbs_pri
group by rootid) as B
on A.rootid = B.rootid
order by B.MaxTime desc, A.time



經過測試,沒有錯的!
愉快的登山者 2003-01-10
  • 打赏
  • 举报
回复
去掉order by newesttime。
chenlm 2003-01-10
  • 打赏
  • 举报
回复
to:tj_dns(愉快的登山者)
第一个会出错,见上

第二个达不到效果
chenlm 2003-01-10
  • 打赏
  • 举报
回复
出错了~和我用内联的时候一样的错误

服务器: 消息 1033,级别 15,状态 1,行 3
除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。
愉快的登山者 2003-01-10
  • 打赏
  • 举报
回复
select A.* from pnamabbs_pri as A left join (
select rootid,max(time) as newesttime from pnamabbs_pri
group by rootid) as B
on A.rootid = B.rootid
order by B.newesttime, A.time
愉快的登山者 2003-01-10
  • 打赏
  • 举报
回复
select A.* from pnamabbs_pri as A left join (
select rootid,max(time) as newesttime from pnamabbs_pri
group by rootid order by newesttime) as B
on A.rootid = B.rootid
order by B.newesttime, A.time

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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