你的位置:首页 > 数据库

[数据库]SQL语句分组排序,多表关联排序


SQL语句分组排序,多表关联排序总结几种常见的方法:

 

案例一:

在查询结果中按人数降序排列,若人数相同,则按课程号升序排列?

分析:单个表内的多个字段排序,一般可以直接用逗号分割实现。

select * from tableA order by col1 desc,col2 asc;-- 先按col1降序,相同则按col2 升序

 

案例二:

T-SQL查询班级信息:班级人数+班级信息,按人数多少排序?

-- 创建测试数据create table stu(sid int primary key identity(1,1),sname varchar(50),sage int,scid int foreign key references class(cid))create table class(cid int primary key identity(1,1),code varchar(50),cname varchar(50),cgrade varchar(50))insert into stu values('张三',19,1)insert into stu values('李四',20,2)insert into stu values('王五',21,2)insert into class values('c001','1','一年级')insert into class values('c002','2','一年级')-- 按人数分组排序查询select  class.cgrade, class.code, class.cname, count(stu.sid) as 人数 from  class JOIN stu  ON (class.cid = stu.scid)group by  class.cgrade, class.code, class.cnameorder by  count(stu.sid) desc

 

案例三:

SQL 查询统计每个用户组发文章数量并按数量排序?

有三个表 文章表 记录文章标题、内容、发布人 发布时间,用户表 记录用户组id 用户名 密码,用户组表 记录id 用户组名称

问题是 现在要查询每个用户组发布文章的数量,并且按着数量排序。不知道怎么搞呀 大神们
还要查询 每个月中发文排行榜....

SELECT COUNT(1) AS 数量, c.用户组名称 FROM 文件表 a INNER JOIN 用户表 b ON a.发布人 = b.用户名 INNER JOIN 用户组表 c ON b.用户组id = c.id GROUP BY c.id, c.用户组名称 ORDER BY 数量