SQL中Group By和Order By的区别
在使用SQL查询数据库时,很常见的两个操作是Group By和Order By。这两个操作都是用来处理返回结果的顺序,但是它们的用途和效果是不同的。
阅读更多:MySQL 教程
Group By
Group By是将查询结果按照指定的一个或多个列进行分组,然后对每个分组进行聚合操作,最后返回每个分组的聚合结果。比如以下示例:
SELECT Department, COUNT(*) FROM Employees
GROUP BY Department;
这条SQL语句将会返回每个部门的员工数量。
在执行Group By操作时,需要注意以下几点:
- 被
Group By的列必须出现在SELECT语句中,除非它是分组中的列; - 被
Group By的列不能使用聚合函数,如SUM、AVG等; - 如果查询结果中有聚合函数,那么所有未聚合的列都必须出现在
GROUP BY子句中。 
Order By
Order By是将查询结果按照指定的一个或多个列进行排序,然后返回排序后的结果。比如以下示例:
SELECT * FROM Customers
ORDER BY LastName, FirstName;
这条SQL语句将会返回按照姓氏和名字排序后的所有客户记录。
在执行Order By操作时,需要注意以下几点:
- 被
Order By的列不一定要出现在SELECT语句中; - 可以使用
ASC(升序)或DESC(降序)指定排序顺序,默认是升序; - 可以按照多个列进行排序,每个列可以指定不同的排序顺序。
 
区别
Group By和Order By的区别可以用以下几点来总结:
- 用途不同:
Group By是用来分组并聚合数据的,Order By是用来排序返回数据的。 - 执行顺序不同:
Group By总是在Order By之前执行,因为排序后再分组没有意义。 - 对查询结果影响不同:
Group By会把结果按照分组后的列进行聚合,因此返回的结果中只有分组列和聚合运算后的结果,Order By则只是对结果进行排序,不影响结果本身。 - 使用方式不同:
Group By必须指定分组列,而且不能使用聚合函数以外的列,而Order By没有这些限制。 
综上所述,Group By和Order By是两个截然不同的操作,虽然它们都可以用来控制返回结果的顺序,但是它们的用途和效果是不同的,需要根据具体的场景来进行选择和使用。
结论
在使用SQL查询数据库时,要根据具体场景选择使用Group By或Order By,遵循它们的使用规则,才能获得正确的结果。
极客笔记