group by是分组的,比如你要查询一个班级的学生,各省分别有多少人。(表结构是学生表,有学号,姓名,所在省,备注等。)
就应该用到group by了,如:
SELECT 所在省,COUNT(*) AS 学生数
FROM 学生
GROUP BY 所在省
Order by是用来排序的。如,你想要把上例中查得的结果按人数从大到小,或从小到大排列,可以加这么一句,
ORDER BY 学生人数 (DESC或ASC);
好了,就这么个用法。
后面括号的关键字,指明了从大到小,还是从小到大,只能写一个,并且不要括号。
group by 是分组的意思,按其后的字段对结果分组,该字段内容相同的结果会列在一起;
例子:
原数据库内容:
学号 姓名 性别 系别
101013 王五 男 计算机
101014 孙二 女 数学
101011 张三 男 计算机
101012 李四 女 数学
select *
from Student
Group by Dept //用系别对结果分组
结果:
101011 张三 男 计算机
101013 王五 男 计算机
101014 孙二 女 数学
101012 李四 女 数学
***************************************************
order by 是排序的意思,按其后的字段对结果排序,但是排序分升序,降序:
select *
from Student
order by No //用学号升序排列结果:
101011 张三 男 计算机
101012 李四 女 数学
101013 王五 男 计算机
101014 孙二 女 数学
可按照在 GROUP BY 子句中定义的组对行进行分组。以其最简单的形式,组由称为分组列的列组成。 SELECT 子句中的列名必须为分组列或列函数。列函数对于 GROUP BY 子句定义的每个组各返回一个结果。下列示例产生一个列出每个部门编号的最高薪水的结果:
SELECT DEPT, MAX(SALARY) AS MAXIMUM
FROM STAFF
GROUP BY DEPT
此语句产生下列结果:
DEPT MAXIMUM
------ ---------
10 22959.20
15 20659.80
20 18357.50
38 18006.00
42 18352.80
51 21150.00
66 21000.00
84 19818.00
注意:计算的是每个部门(由 GROUP BY 子句定义的组)而不是整个公司的 MAX(SALARY)。
order by 是排序用的,默认是正序排列,order by 课程名 desc 表示按照倒序排序。
当然你可以把order by 放在 group by的后面为结果进行排序。
SELECT DEPT, MAX(SALARY) AS MAXIMUM
FROM STAFF
GROUP BY DEPT
ORDER BY MAX(SALARY)
group by主要用于分组了,比如在一个班级中一共有4个小组,问第一小组的平均成绩是多少,这就是针对组而言了,select avg(成绩) from student group by 第一小组,如果有条件再加上having+条件,同where +条件用法相同
而order by是对字段排序用的,如对你的学号进行排序查询,select * from student order by 学号
顺序是:
SELECT .... FROM .... WHERE .... GROUP BY .... ORDER BY ....