我想这样的查询在MYSQL子查询返回
select
Sum(case when WindowsXP = "PASS" then 1 else 0 end) as PASS ,
Sum(case when WindowsVista = "FAIL" then 1 else 0 end) as FAIL
from OS_Table where BuildID = (select distinct BuildID from OS_Table)
group by BuildID
错误是子查询返回不止一行。如果我使用IN
,而不是=
那么查询是怎么回事永远(近3分钟后也不会停止)
基本上,我想实现的是为每个不同的BuildID,给我PASS的计数,失败时的WindowsXP = “PASS” 和WindowsVista的= “FAIL”
我几乎10个不同BuildID的
如何实现这一目标?
能否请你用英文解释我的查询意味着什么?我想要做什么? – JPro 2010-02-02 11:48:53
好的。使用IN运算符,是查询进入无限循环?或者什么时候它完全停止? – JPro 2010-02-02 15:13:09
似乎你的'buildID'字段没有编入索引。否则,'MySQL'只会使用'index_subquery',这会对每个'buildId'进行一次索引扫描。没有索引,它必须为它解析的每条记录运行独特的查询。这个循环并不是无穷无尽的,它只是很长。无论如何,这种情况根本没用。 – Quassnoi 2010-02-02 15:19:59