sql 求和并且将求和条件作为查询条件

上代码

查询某张表中多批物资的库存数,并且要求库存数>0


SELECT operation_warehouse,mat_id,mat_num,specification_type,mat_type,unit,sum(stock_num) as tt,sum(balance_num),
sum(occupy_num)
FROM `ws_mat_stock`
GROUP BY  operation_warehouse,mat_id,mat_num,specification_type,mat_type,unit
HAVING sum(stock_num)>0

一开的是时候是用的where作的查询条件,但是会报错,表示不知道where条件这一列,不存在;

后来看到说  having 查询条件是在分后之后进行的条件设置

测试成功。

 

Where”是一个约束声明,在查询数据库的结果返回之前对数据库中的查询条件进行约束,即在结果返回之前起作用,且where后面不能使用“聚合函数”;

“Having”是一个过滤声明,所谓过滤是在查询数据库的结果返回之后进行过滤,即在结果返回之后起作用,并且having后面可以使用“聚合函数”。

 

having和where 能够同时使用

From->Where->Group By->Having->Select
Where语句是过滤符合条件的数据。
Having是对Group By的结果进行过滤。

你可能感兴趣的:(sql,sql)