我想這樣的查詢在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