sql 置顶排序
有两个表表1:consumeidtid111214312表2:teacheridtnametdate10李老师2008/1/2221:54:2711支老师2008/1/2...
有两个表
表1:consume
id tid
1 11
2 14
3 12
表2:teacher
id tname tdate
10 李老师 2008/1/22 21:54:27
11 支老师 2008/1/21 21:54:27
12 龚老师 2008/1/25 21:54:27
13 宋老师 2008/1/28 21:54:27
14 魏老师 2008/1/29 21:54:27
15 金老师 2008/1/30 21:54:27
16 赵老师 2008/1/19 21:54:27
17 张老师 2008/1/18 21:54:27
18 严老师 2008/1/17 21:54:27
19 刘老师 2008/1/17 21:34:27
其中表1中的tid是表2中的id,
我想让表2中的数据这样排序:
如果表2中的id在表1中的tid中有,就排在前面,没有就排在后面
对于排在前面的又按照表1中的id升序排
对于排在后面的,按表2中的tdate的降序排序
研究了很久,总是不能让排在前面的按表1中的id升序排列。
高手,,,怎么搞?
我的是ACCESS数据库,做网站需要用到这种排列,网站是用ASP写的。写出一条SQL即可
tz6060996 的答案中,
select * from teacher left join consume on consume.tid = teacher.id Order by consume.id,teacher.tdate desc 不能排出在表1中出现的tid排列在前面,但是如果改成
select * from teacher left join consume on consume.tid = teacher.id Order by consume.id,teacher DESC.tdate desc 后,虽然可以排在前面了,但是是按表1中的ID降序排列的,不是我想要的升序。
还有高手吗?? 展开
表1:consume
id tid
1 11
2 14
3 12
表2:teacher
id tname tdate
10 李老师 2008/1/22 21:54:27
11 支老师 2008/1/21 21:54:27
12 龚老师 2008/1/25 21:54:27
13 宋老师 2008/1/28 21:54:27
14 魏老师 2008/1/29 21:54:27
15 金老师 2008/1/30 21:54:27
16 赵老师 2008/1/19 21:54:27
17 张老师 2008/1/18 21:54:27
18 严老师 2008/1/17 21:54:27
19 刘老师 2008/1/17 21:34:27
其中表1中的tid是表2中的id,
我想让表2中的数据这样排序:
如果表2中的id在表1中的tid中有,就排在前面,没有就排在后面
对于排在前面的又按照表1中的id升序排
对于排在后面的,按表2中的tdate的降序排序
研究了很久,总是不能让排在前面的按表1中的id升序排列。
高手,,,怎么搞?
我的是ACCESS数据库,做网站需要用到这种排列,网站是用ASP写的。写出一条SQL即可
tz6060996 的答案中,
select * from teacher left join consume on consume.tid = teacher.id Order by consume.id,teacher.tdate desc 不能排出在表1中出现的tid排列在前面,但是如果改成
select * from teacher left join consume on consume.tid = teacher.id Order by consume.id,teacher DESC.tdate desc 后,虽然可以排在前面了,但是是按表1中的ID降序排列的,不是我想要的升序。
还有高手吗?? 展开
4个回答
展开全部
试验了一下下面这个可以:
oracle:
select t.id,t.tname,t.tdate from teacher t left join consume c on t.id=c.tid order by c.id,tdate desc;
select t.id,t.tname,t.tdate from teacher t left join consume c on t.id=c.tid order by nvl(c.id,9999999),tdate desc;
sqlserver:
select t.id,t.tname,t.tdate from teacher t left join consume c on t.id=c.tid order by isnull(c.id,9999999),tdate desc;
*****************************************************
补充:
access:
SELECT t.id, t.tname, t.tdate
FROM teacher AS t LEFT JOIN consume AS c ON t.id=c.tid
ORDER BY iif(isnull(c.id),999999,c.id), tdate DESC;
*****************************************************
---
以上,希望对你有所帮助。
oracle:
select t.id,t.tname,t.tdate from teacher t left join consume c on t.id=c.tid order by c.id,tdate desc;
select t.id,t.tname,t.tdate from teacher t left join consume c on t.id=c.tid order by nvl(c.id,9999999),tdate desc;
sqlserver:
select t.id,t.tname,t.tdate from teacher t left join consume c on t.id=c.tid order by isnull(c.id,9999999),tdate desc;
*****************************************************
补充:
access:
SELECT t.id, t.tname, t.tdate
FROM teacher AS t LEFT JOIN consume AS c ON t.id=c.tid
ORDER BY iif(isnull(c.id),999999,c.id), tdate DESC;
*****************************************************
---
以上,希望对你有所帮助。
展开全部
select teacher.*
from
teacher
left join
consume
on
teacher.id=consume.tid
order by isnull(consume.tid,99999999),teacher.tdate desc
--没有环境测试不知到是不是你想要的
from
teacher
left join
consume
on
teacher.id=consume.tid
order by isnull(consume.tid,99999999),teacher.tdate desc
--没有环境测试不知到是不是你想要的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select * from teacher left join consume on consume.tid = teacher.id Order by consume.id,teacher.tdate desc
注:没有调试,自己去试一下.
注:没有调试,自己去试一下.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上的应该在执行时报union的错吧,order by 后跟union?
************
SELECT * into #t1
FROM teacher
where id in (select tag from consume ) order by id
select * into #t2
from teacher where id not in (select tag from consume) order by tdate desc
select * from #t1
union all
select * from #t2
drop table #t1
drop table #t2
************
SELECT * into #t1
FROM teacher
where id in (select tag from consume ) order by id
select * into #t2
from teacher where id not in (select tag from consume) order by tdate desc
select * from #t1
union all
select * from #t2
drop table #t1
drop table #t2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询