having 与where 的异同点

having 与where 的异同点:
where针对表中的列发挥作用,查询数据
having对查询结果中的列发挥作用,筛选数据

#查询本店商品价格比市场价低多少钱,输出低200元以上的商品
select goods_id, market_price - shop_price as s from goods having s>200 ; //这里不能用where因为s是查询结果,而where只能对表中的字段名筛选

如果用where的话则是:
select goods_id,goods_name from goods where market_price - shop_price > 200;

#同时使用where与having
select cat_id, market_price - shop_price as s from goods where cat_id = 3 having s > 200;

#查询积压货款超过2万元的栏目,以及该栏目积压的货款
select cat_id, sum(shop_price * goods_number) as t from goods group by cat_id having s > 20000

#查询两门及两门以上科目不及格的学生的平均分 思路: #先计算所有学生的平均分
select name, avg(score) as pj from stu group by name; #查出所有学生的挂科情况 select name,score<60 from stu; #这里score<60是判断语句,所以结果为真或假,mysql中真为1假为0 #查出两门及两门以上不及格的学生 select name, sum(score<60) as gk from stu group by name having gk > 1; #综合结果 select name,sum(score<60) as gk, avg(score) as pj from stu group by name having gk >1;

 

### 回答1: "where"和"having"是SQL查询语言中的两个不同的关键词。 "where"用于指定一个条件,以过滤表中的记录。例如,如果您想在表中选择所有具有特定值的记录,则可以使用"where"子句。 "having"也用于过滤数据,但它是在聚合函数(如SUM、AVG、COUNT等)已经被应用后进行的。例如,如果您想从已计算出总和的结果中选择特定值,则可以使用"having"子句。 因此,"where"和"having"的区别在于它们用于过滤数据的不同阶段。"where"用于过滤记录,而"having"用于过滤已聚合的数据。 ### 回答2: "where" 与 "having" 是两个在SQL查询中常用的关键字,它们在查询数据时有一些区别。 "where" 子句是用于在查询时对行进行筛选的条件。它在执行查询之前应用,并在从表中选择行时进行过滤。通过 "where" 子句,可以基于列的值来限制返回的结果。例如,可以使用 "where" 子句来选择所有满足特定条件的行,比如 "age > 18" 选择所有年龄大于18岁的人。 相反,"having" 子句是用于在对结果集进行分组后对分组进行筛选的条件。它在 "group by" 子句之后应用,并在结果集中对分组进行筛选。通过 "having" 子句,可以基于聚合函数的结果来限制返回的结果。例如,可以使用 "having" 子句来选择满足特定条件的分组,比如 "sum(sales) > 1000" 选择所有销售总额大于1000的分组。 总结起来,"where" 子句用于对行进行筛选,而 "having" 子句用于对分组进行筛选。这是因为 "where" 子句在查询执行之前应用,而 "having" 子句在查询执行之后应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值