创建分组
分组是在 SELECT 语句的 GROUP BY 子句中建立的
select vend_id, COUNT(*) AS nums_prods From products GROUP BY vend_id;
上面的 SELECT 语句指定了两个列, vend_id 包含产品供应商的ID,
num_prods 为计算字段(用 COUNT(*) 函数建立)。 GROUP BY 子句指
示MySQL按 vend_id 排序并分组数据。
select vend_id, COUNT(*) AS nums_prods From products WHRER prod_price >= 10 GROUP BY vend_id Having COUNT(*)>=2;
在第一条语句基础上进行限制查询,实现过滤分组,它列出具有2个(含)以上、价格为10(含)以上的产品的供应商
在具体使用 GROUP BY 子句前,需要知道一些重要的规定。
- 1.GROUP BY 子句可以包含任意数目的列。这使得能对分组进行嵌套,为数据分组提供更细致的控制。
- 2.如果在 GROUP BY 子句中嵌套了分组,数据将在最后规定的分组上,进行汇总。换句话说,在建立分组时,指定的所有列都一起计算(所以不能从个别的列取回数据)。
- 3.GROUP BY 子句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数)。如果在 SELECT 中使用表达式,则必须在GROUP BY 子句中指定相同的表达式。不能使用别名。
- 4.除聚集计算语句外, SELECT 语句中的每个列都必须在 GROUP BY子句中给出。
- 5.如果分组列中具有 NULL 值,则 NULL 将作为一个分组返回。如果列中有多行 NULL 值,它们将分为一组。
- 6.GROUP BY 子句必须出现在 WHERE 子句之后, ORDER BY 子句之前。
子查询
嵌套在其他查询中的查询,子查询总是从内向外处理。例如:
select cust_id
from orders
where order_num in(select order_num
from orderitems
where prod_id='TNT2');
联结
SQL最强大的功能就是能在数据检索查询的执行中联结表
计算标准日期格式下,日期之间的插值:datediff()