2 回答

TA贡献1828条经验 获得超3个赞
您可以进行条件聚合:
select
sum(c.status = ?) cnt_open,
sum(c.status = ?) cnt_progress,
sum(c.status = ?) cnt_closed
from complaints c
inner join users u on u.u_id = c.u_id_fk
inner join cell_num cn on cn.u_id_fk = u.u_id
此查询一次接受三个参数,它们对应于您传递给三个单独查询的三个值。
请注意,我修改了查询以使用标准连接(使用on关键字)而不是老式的隐式连接(在子句中使用逗号from):不应在新代码中使用这种陈旧的语法。
where您可以通过添加一个对三个可能的 es 进行过滤的子句来提高查询效率status(这需要将每个参数传递两次):
where c.status in (?, ?, ?)

TA贡献1875条经验 获得超5个赞
你可以这样做,它更优化
select c.statut,count(c.c_id)
from complaints c
inner join users u on u.u_id = c.u_id_fk
inner join cell_num cn on cn.u_id_fk = u.u_id
where c.status in (?, ?, ?)
group by c.status
- 2 回答
- 0 关注
- 138 浏览
添加回答
举报