mysql如何使用having筛选结果集

本文介绍 MySQL 中 HAVING 子句的使用方法,通过实例对比 WHERE 和 HAVING 的区别,展示了如何利用 HAVING 对查询结果进行进一步筛选。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql的数据通过WHERE查询只能操作mysql数据库存储上的sql数据。当查询结果本身是筛选过的结果集,那么我们就不能用where继续操作结果集上的一些别名查询

所以mysql 有一个处理结果集的关键字 having 继续处理结果集数据
如下goods表,我想知道我们店铺手机销售价比市场价低多少? 并且把差价在400以上的数据查询出来

	|   gid	  | g_name	|shop_price|market_price|
	|---------|-------- |----------|------------|
	|    1    | 三星2019 |	11112  |   12111	|
	|---------|-------- |----------|------------|
	|    2    |  ipone8 |	6668   |   6999		|
	|---------|-------- |----------|------------|
	|    3    | 华为Note |	6666   |   7100		|
  1. 普通查询方式
SELECT gid,g_name,market_price,shop_price,market_price-shop_price FROM goods WHERE market_price-shop_price>400
	|   gid	  | g_name	|shop_price|market_price|market_price-shop_price|
	|---------|-------- |----------|------------|-----------------------|
	|    1    | 三星2019 |	11112  |   12111	|		999				|
	|---------|-------- |----------|------------|-----------------------|	
	|    3    | 华为Note |	6666   |   7100		|		434				|

如果我们不想二次使用这种长字段的方式查询数据

  1. having 来筛选结果集

注:如果语句中使用WHERE要把having放在WHERE后面

	SELECT gid,g_name,market_price,shop_price,(market_price-shop_price) as diff FROM  `collector_v`  having diff>400

查询结果如下:

	|   gid	  | g_name	|shop_price|market_price|		diff 			|
	|---------|-------- |----------|------------|-----------------------|
	|    1    | 三星2019 |	11112  |   12111	|		999				|
	|---------|-------- |----------|------------|-----------------------|	
	|    3    | 华为Note |	6666   |   7100		|		434				|

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值