首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

这个排序语句如何写

2012-10-12 
这个排序语句怎么写?用到两个表,teacher和studentteacher的字段和值如下:id name sex1 王老师 男2 李老师

这个排序语句怎么写?
用到两个表,teacher和student

teacher的字段和值如下:
id name sex
1 王老师 男
2 李老师 男
3 余老师 女
4 张老师 女


student的字段和值如下:
id name teacherId
1 张三 1
2 李四 1
3 王五 2
4 宋六 1
5 郑七 3
我想查出老师的详细资料,但按照学生数量由少到多排列,即此例里查出的结果显示为:

id name sex
1 张老师 女
2 余老师 女
3 李老师 男
4 王老师 男

谢谢!

[解决办法]

SQL code
select a.*from teacher a inner join select teacherid,count(1) [数量] from  student group by teacherid) b on a.id=b.teacherIdorder by b.[数量]
[解决办法]
SQL code
;WITH c1 AS(select t.id, COUNT(t.id) studentNumfrom teacher tLEFT JOIN student s ON t.id=s.teacheridGROUP BY t.idHAVING COUNT(t.id)>2)SELECT t.*FROM c1 JOIN teacher t ON c1.id = t.idORDER BY c1.studentNum ASC
[解决办法]
SQL code
create table teacher(id int, name varchar(10), sex varchar(4))insert into teacherselect 1, '王老师', '男' union allselect 2, '李老师', '男' union allselect 3, '余老师', '女' union allselect 4, '张老师', '女'create table student(id int, name varchar(10), teacherId int)insert into studentselect 1, '张三', 1 union allselect 2, '李四', 1 union allselect 3, '王五', 2 union allselect 4, '宋六', 1 union allselect 5, '郑七', 3select row_number() over(order by isnull(s.ct,0),t.sex desc) 'id',t.name,t.sexfrom teacher tleft join (select teacherId,count(1) 'ct'  from student group by teacherId) s on t.id=s.teacherIdorder by isnull(s.ct,0),t.sex desc/*id                   name       sex-------------------- ---------- ----1                    张老师        女2                    余老师        女3                    李老师        男4                    王老师        男(4 row(s) affected)*/ 

热点排行