4.5 SELECT语法结构和运算顺序
2020年3月31日
10:34
一、语法结构（必须按照下面的顺序）
SELECT [DISTINCT] 字段名 FROM 表名
[WHERE] 条件筛选（必须是原表格里有的字段名，比如日期）
[GROUP BY] 分组
[HAVING] 分组筛选（原表格里没有的，我自己创的比如count*才用，否则就用where）
[ORDER BY] 排序
[LIMIT] 名次或分页 （前三名）
二、运算顺序
（1）首先运算的是FROM子句，根据FROM子句中指定的一个或多个表创建工作表。
（2）如果存在WHERE子句，则WHERE子句对步骤1获得的工作表进行条件筛选，删除不符合条件的记录。
（3）如果存在GROUP BY子句，则对步骤2生成的结果表按指定字段进行分组，生成一份新的结果表。
（4）如果存在HAVING子句，则对步骤3的结果表按指定条件进行筛选，删除掉不满足筛选条件的记录。
（5）执行SELECT子句，删除不包含在SELECT 字段名 ，所指定的字段。如果SELECT子句中包含关键字DISTINCT，则执行去重复运算……
（6）如果有ORDER BY子句，则按指定的排序规则对结果表进行排序操作。
（7）如果需要找前几名，用LIMIT 名次
三、总结
（1）来自哪张表
（2）where筛选条件
（3）[GROUP BY] 分组
（4）[HAVING] 分组筛选
（5）排序
（6）名次或分页