You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否用单条SQL查询统计全部患病用户及未读用户数量?

单条SQL实现总患病用户数与未读用户数统计

当然可以用单条SQL完成这两个统计,不需要拆分两条查询,也没必要用事务包裹。

你可以通过条件聚合的方式,在一次查询中同时计算总数和未读数量,示例SQL如下:

SELECT
  COUNT(id) AS total_ill_users,
  SUM(CASE WHEN read = false THEN 1 ELSE 0 END) AS unread_ill_users
FROM users_ill;

或者用COUNT结合条件判断的写法,效果一致:

SELECT
  COUNT(id) AS total_ill_users,
  COUNT(CASE WHEN read = false THEN id END) AS unread_ill_users
FROM users_ill;

为什么不需要事务?

单条SQL查询本身就是原子操作,会基于数据库的同一数据快照计算两个统计值,能保证总数和未读数的一致性。如果拆成两条查询,万一在两次查询之间有数据变更(比如新增患病用户、修改read字段状态),两次结果可能会出现不匹配的情况,反而不如单条查询可靠。

内容的提问来源于stack exchange,提问作者mastermaster11

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 20:32:33