对于select * from a, b where a.bid = b.id; 和select * from a join b on a.bid = b.id; 的问题
调查一些资料得到的结果是,这两种方法等价,同时都是先生成笛卡尔积表之后进行数据的筛选之后再得到结果
同时也查到以下一些东西,做个标记
查询的逻辑执行顺序
(1) FROM left_table
(3) join_type JOIN right_table (2) ON join_condition
(4) WHERE where_condition
(5) GROUP BY group_by_list
(6) WITH {cube | rollup}
(7) HAVING having_condition
(8) SELECT (9) DISTINCT (11) top_specification select_list
(9) ORDER BY order_by_list
标准的 SQL 的解析顺序为:
(1) FROM 子句 组装来自不同数据源的数据
(2) WHERE 子句 基于指定的条件对记录进行筛选
(3) GROUP BY 子句 将数据划分为多个分组
(4) 使用聚合函数进行计算
(5) 使用HAVING子句筛选分组
(6) 计算所有的表达式
(7) 使用ORDER BY对结果集进行排序