这个SQL怎么写?帮忙看看
留言表结构
id 留言时间 留言内容 父ID 留言时间
相关说明:
父ID默认为0
如果不为0,而为I,那么该天记录就是对id为I的留言就行回复。
现在我想根据回复的时间顺序对留言进行查询出来结果。请问这样的SQL怎么写?
留言表结构
id 留言时间 留言内容 父ID 留言时间
相关说明:
父ID默认为0
如果不为0,而为I,那么该天记录就是对id为I的留言就行回复。
现在我想根据回复的时间顺序对留言进行查询出来结果。请问这样的SQL怎么写?
不是很明白你要查询什么,最好有个例子
我是菜鸟,来学习
没人知道吗?
不是没人知道,是你的表述不是很清楚。
最好能贴出一些示例数据,加上你想要的结果。
是不是想查处给id为I的所有留言,按时间排序:
注意:一张表不能有两个一样的字段“留言时间”
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
未测试,你自己试试好不好使吧
http://www.xinxi168.com/Paste.asp
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