SELECT 留言内容 FROM 留言表 WHERE 父ID=1 ORDER BY 回复时间 DESC
select 留言表.id,ISNULL(中间表.最后留言时间,留言表.留言时间) as 最后时间,留言表.留言内容 from 留言表 left outer join (select 父id,max(留言时间) as 最后留言时间 from 留言表 group by 父id) 中间表 on 留言表.id=中间表.父ID where 留言表.id=0
忘了排序了 select * from (select 留言表.id,ISNULL(中间表.最后留言时间,留言表.留言时间) as 最后时间,留言表.留言内容 from 留言表 left outer join (select 父id,max(留言时间) as 最后留言时间 from 留言表 group by 父id) 中间表 on 留言表.id=中间表.父ID where 留言表.id=0) ) 中间表2 order by 中间表2.最后时间 desc未测试,你自己试试好不好使吧
SELECT * FROM 留言表 WHERE 父ID<>0 ORDER BY 留言时间 DESC UNION SELECT * FROM 留言表 WHERE 父ID=0 ORDER BY 留言时间 DESC
没有那么复杂的,这样就可以的 Select * from 留言表 A Where id=0 Order By (Case When Exists(Select * from 留言表 Where 父ID=A.id) Then 0 Else 1 End),留言时间
Select * from 留言表 A Where id=0 Order By (Case When Exists(Select * from 留言表 Where 父ID=A.id) Then 0 Else 1 End),留言时间
回复人: paoluo(一天到晚游泳的鱼) ( ) 信誉:100 没有那么复杂的,这样就可以的 Select * from 留言表 A Where id=0 Order By (Case When Exists(Select * from 留言表 Where 父ID=A.id) Then 0 Else 1 End),留言时间--------------------------------------------- 这贴楼主早就没影了 你写的这个只能判断有没有回复,而没判断最后回复时间
select id 留言时间 留言内容 父ID 留言时间 from 留言表 where 父ID=I order by 留言时间;如果是id=I就回复的话那么where处改为 where id=I
FROM 留言表
WHERE 父ID=1
ORDER BY 回复时间 DESC
from 留言表 left outer join
(select 父id,max(留言时间) as 最后留言时间 from 留言表 group by 父id) 中间表 on 留言表.id=中间表.父ID where 留言表.id=0
select * from
(select 留言表.id,ISNULL(中间表.最后留言时间,留言表.留言时间) as 最后时间,留言表.留言内容
from 留言表 left outer join
(select 父id,max(留言时间) as 最后留言时间 from 留言表 group by 父id) 中间表 on 留言表.id=中间表.父ID where 留言表.id=0)
) 中间表2
order by 中间表2.最后时间 desc未测试,你自己试试好不好使吧
id 留言时间 留言内容 父ID
1 2005-02-02 ddddd 0
2 2005-02-02 3dweew 0
3 2005-02-02 3232323 2
相关说明:
父ID默认为0
如果不为0,而为I,那么该天记录就是对id为I的留言就行回复。
比如上面的数据,1,2两条都是留言的内容。而3为对第一条留言的回复。现在我想得到最新有回复的留言。如果没有留言就排到最后。
得到下面结果为:id 留言时间 留言内容 父ID
2 2005-02-02 ddddd 0
1 2005-02-02 3dweew 0请问,SQL怎么写??
FROM 留言表
WHERE 父ID<>0
ORDER BY 留言时间 DESC
UNION
SELECT *
FROM 留言表
WHERE 父ID=0
ORDER BY 留言时间 DESC
Order By (Case When Exists(Select * from 留言表 Where 父ID=A.id) Then 0 Else 1 End),留言时间
Order By (Case When Exists(Select * from 留言表 Where 父ID=A.id) Then 0 Else 1 End),留言时间
没有那么复杂的,这样就可以的 Select * from 留言表 A Where id=0
Order By (Case When Exists(Select * from 留言表 Where 父ID=A.id) Then 0 Else 1 End),留言时间---------------------------------------------
这贴楼主早就没影了
你写的这个只能判断有没有回复,而没判断最后回复时间
from 留言表
where 父ID=I
order by 留言时间;如果是id=I就回复的话那么where处改为
where id=I