如何在单个MySQL查询中实现多COUNT统计?
合并MySQL两个统计查询为单结果集
你可以用条件聚合实现这个需求,仅需一次分组就能同时得到两个统计结果,避免重复查询或表关联操作。合并后的SQL语句如下:
SELECT user_id, COUNT(*) AS count1, COUNT(CASE WHEN concerned = 1 THEN 1 END) AS count2 FROM users_vuln WHERE vuln_id IN (48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62) GROUP BY user_id;
逻辑说明
COUNT(*):统计所有符合vuln_id条件的记录数,对应你第一个查询的结果。COUNT(CASE WHEN concerned = 1 THEN 1 END):仅统计concerned = 1的记录数——当条件不满足时CASE返回NULL,COUNT函数会自动忽略NULL值,正好匹配第二个查询的统计逻辑。
内容的提问来源于stack exchange,提问作者Tukinho
相关产品推荐
相关产品推荐

