求一数据表的排列问题?

ykwang 2004-07-07 02:07:16
如果实现如CSDN 那个的论坛顺序排列. 就是显示的主题是按回复的日期排列的.

我有如下论坛表

发布标题 发送日期 类型 ID号 IDENTITY(自增列)
您好 2004.07.03 主题 1
您不好 2004.07.01 主题 2
您不不好 2004.06.31 主题 3
您们好 2004.07.02 回复 3
中国人 2004.07.01 回复 2
成功之人 2004.07.04 回复 3


我用类型字类区分这条记录是回复还是主题,用ID号来链接他们之间的联系.
因为我显示的时候用如下语句主题:
select * from 表 where 类型='主题' ORDER BY 发送日期 DESC
这样只能按主题发布的时间来排序,如何能实现按回复发送的时间来排列呢?
即排列顺序如下:
你不不好 排在第一 因它最后的回复日期最近
你好
你不好


请问如何能搞定?
...全文
50 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ykwang 2004-07-07
  • 打赏
  • 举报
回复
呆会结贴
ykwang 2004-07-07
  • 打赏
  • 举报
回复
你好,因为发送日期比回复日期早,所以要排在前面.

不过我现在在上面加了一个回复日期的字段,依靠这个日期来排列了.
leeyoong 2004-07-07
  • 打赏
  • 举报
回复
select a.自增列 ,max(b.发送日期) from 表 a ,表 b where a.类型='主题' and (a.自增列 = b.自增列 or a.自增列 = b.ID) group by a.自增列
ORDER BY max(b.发送日期) DESC
skyboy0720 2004-07-07
  • 打赏
  • 举报
回复
你有两个错误:
1:6月没有31号
2:你给的数据,既然“你好”,没有回复,应该排在最后,你描述的要求与你给出的数据不符合!

这样可以达到你的要求:
select a.* from 表 a
left join (select SID,max(发送日期) as 发送日期 from 表 where 类型='回复' group by SID )b
on b.SID=a.id where a.类型='主题'
ORDER BY b.发送日期 desc,a.发送日期 desc
skyboy0720 2004-07-07
  • 打赏
  • 举报
回复
up!

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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