12.3.9 对查询结果做限定
除了WHERE子句,MySQL还提供了另外两个SQL通用方法来支持查询条件,它们是LIMIT和HAVING。这两个子句主要是为已有的查询结果设置限定条件,从已有的数据结果中,根据LIMIT或HAVING子句指定的条件,进一步选出所需数据。
LIMIT用来限定查询返回的记录条数。如在LIMIT语句的最后加上LIMIT 3,表示返回查询结果中的最前3行记录。而LIMIT 0,10,表示从查询结果中的第1行开始,返回10行记录。下面是使用LIMIT子句的SQL语句及其查询结果。
这句SQL语句首先按字段name排序,然后返回查询结果的前4行。
HAVING子句通常与分组有关,即和GROUP BY子句有关。HAVING子句也用来设置某种查询条件,与WHERE不同的是,它在SELECT语句查询出结果之后才开始做条件限定。这意味着,HAVING子句所指定的条件,只能限定已经从数据库中取出的记录。假设有一个存放公司雇员薪水的表emp_salary(读者可尝试创建这个表,并向其插入一些数据,以便后续小节练习使用),所存储的数据如下所示。
从SELECT语句的查询结果中可以看出,雇员级别不同,薪水也不同。如果要找到薪水在5000.00以上的级别,可以使用如下SQL语句。
这句SQL语句在GROUP BY子句的查询结果中,挑选出薪水大于5000.00的级别,并按薪水降序排序。