5. SELECT COLUMN_LIST
1. FROM TABLE_NAME
2. WHERE
3. GROUP BY
4. HAVING
6. ORDER BY
7. OFFSET
8. FETCH
SELECT语句的执行顺序如上,上一步返回一个结果集,下一步 *** 作该结果集,然后返回新的结果集给再下一步,注意1是FROM,5是SELECT,6是ORDER BY。
这样就很好了解GROUP BY 和HAVING之间的关系了,先GROUP BY分组得出一个结果集,但是该结果集中的数据并不是我们都想要的,HAVING语句就是用来筛选这个结果集,来获得我们想要的结果。
SELECT DEPTNO, COUNT(*)
FROM EMP
GROUP BY DEPTNO
HAVING COUNT(*) >2
AND AVG(SAL) <4000
1. 既然已经根据DEPTNO分组了,那在SELECT后,就应该有分组字段DEPTNO。
2. 如果只根据DEPTNO分组,那分组后的结果集,每行就是一个唯一的DEPTNO。
3. 在HAVING中,无论是COUNT(*)还是AVG(SAL)都是组的属性,COUNT(*)是每组中数据的行数,AVG(SAL)是每组的平均工资。
几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ (所有包含‘value1’这个模式的字符串)---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 分组:select * from table1 group by field1 ORDER BY count(ShopId) LIMIT 20 (兼并排序分页) 总数:select count(*) as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1[separator] 查询去除重复值:select distinct * from table1 使用外连接 A、left outer join: 左外连接(左连接):结果集既包括连接表的匹配行,也包括左连接表的所有行。 SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c B:right outer join: 右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。 C:full outer join: 全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。麻烦采纳,谢谢!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)