多表关联-针对查询结果筛选出符合特定条数的数据

文章介绍了如何在SQL中通过多表关联查询后,利用GROUPBY对查询结果进行分组,接着使用HAVING结合COUNT函数来筛选出满足特定条数(例如3条)的数据记录。这种方法常用于数据统计和过滤。

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

多表关联_针对查询结果筛选出符合特定条数的数据

1.需求

在这里插入图片描述

两表关联查询的结果如上所示;对应的数据进行分组分别有3条和2条,只需要把数量为3的数据筛选出来,得到下面的查询结果。

在这里插入图片描述

2.实现(使用GROUP BY+HAVING+COUNT)

两表中数据:
t_system:
在这里插入图片描述

t_collect_config:
在这里插入图片描述

step1:进行两表关联,并指定edu_code的范围;

SELECT
	sys.edu_code AS eduCode,
	sys.department AS eduName 
FROM
	t_system sys
	LEFT JOIN t_collect_config config ON sys.edu_code = config.edu_code 
WHERE
	sys.active = 1 
	AND config.status = 1 
	AND sys.edu_code IN ( "11112222xx001", "3332222xx001" ) 

查询结果如下:
在这里插入图片描述

step2:筛选出指定条数的
HAVING:它往往与 GROUP BY 配合使用,为聚合操作指定条件;
说到指定条件,往往最先想到的是 WHERE 子句,但 WHERE 子句只能指定行的条件,而不能指定组的条件,因此就有了 HAVING 子句,它用来指定组的条件。

SELECT
	sys.edu_code AS eduCode,
	count( sys.edu_code ),
	sys.department AS eduName 
FROM
	t_system sys
	LEFT JOIN t_collect_config config ON sys.edu_code = config.edu_code 
WHERE
	sys.active = 1 
	AND config.status = 1 
	AND sys.edu_code IN ( "11112222xx001", "3332222xx001" ) 
GROUP BY
	sys.edu_code 
HAVING
	count( sys.edu_code )= 3;

查询结果:
在这里插入图片描述
WHERE 先过滤出行,然后 GROUP BY 对行进行分组,HAVING 再对组进行过滤,筛选出我们需要的组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值