SQL查询中关键词的执行顺序
SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY
其中,SELECT与FROM是必需的,其他关键词则是可选的。
2、这些关键词的书写顺序:
SELECT 字段列表
FROM 表
1、查询中常用到的关键词有: SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY 其中,SELECT与FROM是必需的,其他关键词则是可选的。 2、这些关键词的书写顺序: SELECT 字段列表 FROM 表名 WHERE 记录筛选条件 GROUP BY 分组字段列表 HAVING 分组筛选条件 ORDER BY 排序字段列表 3、WHERE与HAVING的区别: WHERE是对记录进行筛选;而HAVING是对按GROUP BY进行分组后的组进行筛选。 HAVING只有在使用GROUP BY 后才能使用。 4、GROUP BY的两个作用: 第一个作用是,将从表中取出的记录按照一个或者多个字段进行分组; 第二个作用是,去重,其本质仍然是分组。 5、这些关键词的解析/执行顺序: FROM->WHERE->GROUP BY->HAVING->SELECT->ORDER BY 具体的说: FROM:组装来自不同数据源的记录 WHERE:根据指定的条件过滤上一步检索出的记录 GROUP BY:对上面过滤后的记录按指定条件分组 SUM/AVG/COUNT:使用聚合函数进行计算 HAVING:对所有分组根据指定条件进行过滤 SELECT:从上一步过滤后的各个分组记录中提取指定查询的字段列表(包括聚合字段、计算字段、表达式字段等) ORDER BY:对上一步查询得到的结果集按照排序字段列表进行排序,并输出排序结果 6、GROUP BY 字段1,字段2——先对所有记录按照字段1进行分组,然后对分组后的结果再在没组内按照字段2分组。 7、ORDER BY 字段1,字段2——先按照字段1进行排序,再按照字段2进行排序。 8、排序规则关键字:ASC(升序,默认)、DESC(降序)。 9、COUNT关键字,作计数使用。COUNT(*)是做候选数据集的整体计数,COUNT(字段)是对某字段进行计数。如果某列出现NULL值时,COUNT(*)会算入该列,COUNT(字段)则不会算入该列。 举例: 在学生成绩表中,把班级为1班的学生成绩按照学生姓名分组,并且筛选分组结果mssql 按关键字排序,汇总计算各个学生的总成绩,选出总成绩大于600分的学生列表,并按照总分从高到低排列。 SQL语句如下: select std_name, sum(score) as sum_score from grade_table where class_id=1 group by std_name having sum(score)>600 order by 2 asc 在上面的示例中SQL语句的执行顺序如下: ①首先执行FROM子句,从grade_table表检索记录; ②执行WHERE子句,筛选出grade_table表中class_id=1的所有记录; ③执行GROUP BY子句,把grade_table表按std_name列进行分组; ④计算SUM()聚集函数,求出每个std_name的score之和; ⑤执行HAVING子句,筛选出sum(score)大于600的分组; ⑥提取std_name,sum(score)两个字段,产生新的结果集; ⑦执行ORDER BY子句,把⑥的结果集按sum(score)字段升序排列。 参考资料: [1]查询语句中select from where group by having order by的执行顺序 [2]sql关键字的解释执行顺序 [3]sql关键词执行先后顺序 感谢! 文中如有错误和描述不当,欢迎指正! 作者:飞行狮三多 邮箱:hbsygfz@163.com 如有不当之处,请多指正。 (编辑:通辽站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |