mysql 统计查询

本文探讨了MySQL中使用多表关联与聚合函数count进行复杂查询的方法,包括联合查询、case when条件表达式在分组与搜索中的应用,以及如何在MyBatis中实现插入或更新操作。此外,还介绍了如何利用case when进行数据分类统计,以及查询时间相关数据的技巧。

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

mysql中一条sql语句中使用多个count关联查询多张表

SELECT  sum(fkNum) fkNum,sum(tsNum) tsNum,sum(fjNum) fjNum
FROM (
SELECT COUNT(*) fkNum,0 tsNum,0 fjNum FROM yw_consult_feedback WHERE con_id = 1
UNION ALL
SELECT 0 fkNum,COUNT(*) tsNum,0 fjNum FROM yw_consult_user_fb WHERE con_id =1
UNION ALL
SELECT  0 fkNum,0 tsNum,COUNT(*) fjNum FROM yw_consult_attachment WHERE con_id = 1
) t

结果如图
在这里插入图片描述

mybatis插入或者更新

insert into yw_consult_user_fb (con_id, ex_id) values
		<foreach collection="exIdList" item="exId" separator=",">
			(#{conId,jdbcType=INTEGER},#{exId,jdbcType=INTEGER})
		</foreach>
		ON DUPLICATE KEY UPDATE
        con_id = VALUES(con_id),ex_id = VALUES(ex_id)
        

case when 运用

1.分组

SELECT
	user_type userType,
CASE
		user_type 
		WHEN 0 THEN
		'管理员数量' 
		WHEN 1 THEN
		'专家数量' ELSE '未知' 
	END AS NAME,
	COUNT( user_type ) num 
FROM
	sys_user 
GROUP BY
	user_type

2.搜索

SELECT 
max(CASE feedback WHEN 0 THEN 
(SELECT COUNT(*) FROM yw_consult_user_fb WHERE feedback=0 AND ex_id =1)
ELSE 0 END)  wfk ,
max(CASE feedback WHEN 1 THEN 
(SELECT COUNT(*) FROM yw_consult_user_fb WHERE feedback=1 AND ex_id =1)
ELSE 0 END)  asfk,
max(CASE feedback WHEN 2 THEN 
(SELECT COUNT(*) FROM yw_consult_user_fb WHERE feedback=2 AND ex_id =1)
ELSE 0 END) ysfk
FROM
yw_consult_user_fb

查询时间相关数据

今年 YEAR(NOW())

SELECT YEAR(sendtime),YEAR(NOW()) from yw_consult_user_fb

在这里插入图片描述
上一年 YEAR(DATE_SUB(NOW(),INTERVAL 1 YEAR))

SELECT YEAR(sendtime),YEAR(DATE_SUB(NOW(),INTERVAL 1 YEAR)) from yw_consult_user_fb

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值