2013-05-13 48 views
-1

你好,大家好我有這個代碼的麻煩:MySql的兩個子請求計數呼叫

SELECT 

(SELECT count(*) FROM _mark_as WHERE value =2) AS bad, 
(SELECT count(*) FROM _mark_as WHERE value =1) AS good 

FROM `_mark_as` 

它能做什麼,指望所有的「好」與「壞」的值,但是,它在_mark_as呼籲每個條目,它的不對。我想讓單個電話返回一個條目:

# good # bad # 
############## 
# 2 # 2 # 
############## 

請幫忙。

PS:Group by不是出路。因爲首先會做選擇(對於所有條目),然後纔會應用分組。

回答

1
SELECT 
    Sum(CASE WHEN value = 2 THEN 1 ELSE 0 END) as bad, 
    Sum(CASE WHEN value = 1 THEN 1 ELSE 0 END) as good 
FROM _mark_as 
+0

聽起來不錯,但是在count()和sum()之間調用的時間有差異嗎? – user1954544 2013-05-13 02:47:18

+0

答案是正確的,我不能'接受'它接下來5分鐘,只是問你關於共同點的想法。 :) – user1954544 2013-05-13 02:50:44

+0

除非你的桌子是1000萬行加上(巨大的行大小)我不會擔心它 – 2013-05-13 02:51:34