where 子句中不能用聚合函数
where子句作用于表,having子句作业与组
SQL执行顺序:FROM -> ON -> JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> UNION -> ORDER BY -> LIMIT
多表连接规则:
确定查询的信息在哪几张表
确定表和表之间的对应关系和主附关系
确定表和表之间的连接条件
一表作为主表可以保证维度的完整性,多表作为主表可以保证度量的准确性。在没有明确表示需要保证维度完整性的情况下,优先保证度量的准确性,所以将度量值所在的表作为主表。度量字段通常存在于多表中,因此通常情况下可以将多表作为主表进行外连接。
笛卡尔积连接和内连接执行结果相同,但是执行原理不同,笛卡尔积执行效率更慢。
笛卡尔积连接适用于所有的数据库软件
多表连接查询:先对第一个和第二个表按照两表连接查询,然后用用连接后的虚拟结果集和第三个表做连接查询,以此类推,直到所有的表都连接上为止,最终形成一张虚拟结果集,然后根据where条件过滤虚拟结果集中的记录,再根据select指定的列返回查询结果。