sql server where、group by、order by 执行顺序

2024年10月30日 08:48
有2个网友回答
网友(1):

先where 条件1,再 group by 条件2再 order by 条件3

如果声明了 GROUP BY 子句,输出就分成匹配一个或多个数值的不同组里。 如果出现了 HAVING 子句,那么它消除那些不满足给出条件的组。

如果声明了 ORDER BY 子句,那么返回的行是按照指定的顺序排序的。 如果没有给出 ORDER BY,那么数据行是按照系统认为可以最快生成的方法给出的。

虽然 SELECT 语句的完整语法较复杂,但是其主要的子句可归纳如下:
  SELECT select_list
  [ INTO new_table ]
  FROM table_source
  [ WHERE search_condition ]
  [ GROUP BY group_by_expression ]
  [ HAVING search_condition ]
  [ ORDER BY order_expression [ ASC | DESC ] ]
  可以在查询之间使用 UNION 运算符,以将查询的结果组合成单个结果集。

也就是说,order by放在最后面。

网友(2):

先执行where、
然后是group 、
然后是having 、
最后是order by
如果你用的是plspl的话,你可以按F5看执行计划