通常说,GOURP BY 语句是按列来排序并分组数据。但是 GROUP BY 中的排序并不是 SQL 规范所要求的,也就是说我们看到的排序只是 SQL 顺手排好的序,有些时候并不会排好序。所以如果在 GROUP BY 中排序,请使用 ORDER BY 语句。
不要依赖
GROUP BY排序数据。
SELECT 子句顺序
SELECTFROMWHEREGROUP BYHAVINGORDER BYLIMIT
子查询
子查询总是从内向外处理。
SELECT cust_name,cust_state,(SELECT COUNT(*)FROM ordersWHERE orders.cust_id = customers.cust_id) AS ordersFROM customersORDER BY cust_name;
上面这条查询语句,该子查询对检索出的每一行都执行一次,总共检索出 5 行,故该子查询执行了 5 次。
WHERE orders.cust_id = customers.cust_id
上面这句是使用了完全限定列名,这种涉及外部查询的子查询叫相关子查询(correlated subqurey)。
使用子查询并不是最优的方法
关系表
关系表的设计就是要保证把信息分解成多个表。一类数据一个表,各表通过某些常用的值互相关联。
