分组数据(GROUP,HAVING)
分组允许把数据分为多个逻辑组,以便对每个组进行
聚集计算
。
WHERE和HAVING的区别
where在数据分组前进行过滤,having在数据分组后进行过滤。
where排除的行不包括在分组中
子查询
嵌套在其他查询中的查询,是多个查询的结合。
使用子查询创建计算字段
显示customers表中每个客户的订单总数。
SELECT
cust_name,
cust_state,
(SELECT count(*)
FROM orders
WHERE
orders.cust.id = customers.cust_id
) as orders
FROM
customers
ORDER BY
cust_name
从customers表中检索出来-客户列表-,外层查询。
对于检索出来的每个顾客,统计其在orders表中的订单数目。通过cust_id字段进行关联。
有多少条数据,子查询就要执行多少次,事实 上这个方法并不是很好。
关联查询
同时查询多张表的数据成为关联查询
组合查询(UNION关键字)
UNION操作符,将多条SELECT语句合成一个结果。返回类似结构的数据。
可以极大的简化复杂的where子句。