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 關注
- 129 瀏覽
添加回答
舉報