我有以下查询,它应该提供近50行作为输出。它是从记录少于10K的表中搜索的。运行查询大约需要5分钟
select a.dak_dept,b.dept_name,
(
select count(dak_stat)
from dak_dept_mast
where dak_dept = a.dak_dept and dak_stat='N'
) as new,
(
select count(dak_stat)
from dak_dept_mast
where dak_dept = a.dak_dept and dak_stat='O'
) as open,
(
select count(dak_stat)
from dak_dept_mast
where dak_dept = a.dak_dept and dak_stat='C'
) as closed
from dak_dept_mast a,tapal_dept_mast b
where a.dak_dept = b.dept_code
group by a.dak_dept
表dak_dept_mast将dak_dept和dak_no作为组合主键 表tapal_dept_mast将dept_code作为主键。
有人可以提出一些建议。我正在使用XAMPP运行mysql 5.1
提前谢谢
Sujeesh
答案 0 :(得分:1)
您可以尝试替代
SELECT a.dak_dept,
b.dept_name,
SUM(CASE WHEN a.dak_stat='N' THEN 1 ELSE 0 END) new,
SUM(CASE WHEN a.dak_stat='O' THEN 1 ELSE 0 END) open,
SUM(CASE WHEN a.dak_stat='C' THEN 1 ELSE 0 END) closed
FROM dak_dept_mast a JOIN tapal_dept_mast b
ON a.dak_dept = b.dept_code
GROUP BY a.dak_dept