SQL子句

来源:互联网 发布:阿里云幕布背景照片 编辑:程序博客网 时间:2024/05/19 15:24
 

子句:
STARTING WITH子句
STARTING WITH子句附加于WHERE子句上,它的作用与LIKE(exp%)相似。
例子:SELECT * FROM CHECKS WHERE PAYEE STARTING WITH('Ca');
相当于:SELECT * FROM CHECKS WHERE PAYEE LIKE 'Ca%';
同时使用:SELECT * FROM CHECKS WHERE PAYEE STARTING WITH('Ca') OR REMARKS LIKE 'G%';

ORRDER BY子句
如果不使用ORDER BY ,查询的结果是依据它们在输入时的先后次序排列的。
技巧:假如你已经知道了你想要进行排序的列是表中的第一列的话,那么你可以使用ORDER BY 1来代替输入列的名字。
SELECT * FROM CHECKS ORDER BY 1;

GROUP BY子句
注意:不能在SELECT子句中使用除分组列以外的列。

HAVING子句
对分组的数据进行限制。
注意:汇总函数不能用在WHERE子句中。
在HAVING子句中也可以使用其它的逻辑操作符,如:
SELECT TEAM,MIN(SALARY),MAX(SALARY) FROM ORGCHART GROUP BY TEAM HAVING AVG(SALARY)>3700 OR MIN(SALARY)>3200;
操作符IN也可以在HAVING子句中使用,如:
SELECT TEAM,AVG(SALARY) FROM ORGCHART GROUP BY TEAM HAVING TEAM IN ('PR','RESEARCH');
也可以在HAVING子句中使用在SELECT中没有指出的字段进行汇总。如:
select max(totalprice),avg(totalprice) from tbl_order group by account having count(account)>1
警告:在一些解释器中如果在HAVING子句中使用了非汇总函数将会导致错误,如下面语句将会出错:
select account,avg(totalprice) from tbl_order group by account having totalprice>=2000;
切记,无论在什么情况下进行分组,SELECT语句中出现的字段只能是在GROUP BY中出现过的才可以。