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降序排列的,不是我想要的升序。

还有高手吗??
展开
 我来答
奔驰M888
2009-05-22 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1846
采纳率:0%
帮助的人:2711万
展开全部
试验了一下下面这个可以:
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;
*****************************************************
---
以上,希望对你有所帮助。
aab2009aab
2009-05-22 · TA获得超过537个赞
知道小有建树答主
回答量:1047
采纳率:0%
帮助的人:650万
展开全部
select teacher.*
from
teacher
left join
consume
on
teacher.id=consume.tid
order by isnull(consume.tid,99999999),teacher.tdate desc
--没有环境测试不知到是不是你想要的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tz6060996
2009-05-22 · TA获得超过2283个赞
知道大有可为答主
回答量:1171
采纳率:100%
帮助的人:1626万
展开全部
select * from teacher left join consume on consume.tid = teacher.id Order by consume.id,teacher.tdate desc

注:没有调试,自己去试一下.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yanpuforever
2009-05-22 · TA获得超过371个赞
知道小有建树答主
回答量:600
采纳率:0%
帮助的人:0
展开全部
楼上的应该在执行时报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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式