where、having、group by、order by、limit的区别和使用顺序

时间:2024-10-21 22:53:24

where子句:

通过在SELECT语句的WHERE子句中指定条件进行查询,WHERE子句必须紧跟在FROM子句之后。

如:从员工表里查询员工id为h0001的员工的工资

select 工资 from 工资表 where id='h0001';

 

having:

having一般与group by组合来使用,表示在得到分类汇总记录的基础之上,进一步筛选记录。

如:从部门表里查部门内员工薪水总和大于100000的部门的编号

select 部门编号,sum(薪水) from 部门表 group by 部门编号 having sum(薪水)>100000;

 

相同点:where和having都可以加条件

区别:在分组之前加条件,having在分组之后加条件.

           的效率要远远高于having. 分组本身消耗资源非常大.

GROUP BY:

当需要分组查询时需要使用GROUP BY子句,例如查询每个部门的工资和,这说明要使用部门来分组。

select 部门编号,sum(薪水) from 部门表 group by 部门编号;

ORDER BY:

order by 用来指定数据的排序方式。有升序和降序两种。desc表示降序,asc为升序,默认为升序,asc可省略。

order by 要写在where之后limit之前。

  1. select * from stu_info order by id asc;// 按照id升序排序,其中asc可省略。
  2. select * from stu_info order by id desc; //按照id降序

LIMITE:

LIMIT用来限定查询结果的起始行,以及总行数。

如:查询10行记录,起始行从3开始

select * from emp limit 3,10;

综合运用时的使用顺序:

有如下表中数据:

从employee表中查询salary列的值>0且prize字段值>0的记录,结果以id字段分组且降序排列,起始行从0开始,显示5行:

select *  from employee where salary>0  group by id  having  prize>0  order by id desc limit 0,5 ;

结果:

查询到的记录条数小于5行,所以只能显示查询到的总行数。

注意各个关键字使用时的位置和顺序,where在分组之前加条件,having在分组之后加条件,where的效率要远远高于having, 分组本身消耗资源非常大。order by 要写在where之后,limit之前。

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

技术交流微信:intboy520

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>