2013-06-20 30 views
0

我總共有4行。團隊ID 500有3勝1負。當mysql查詢忽略限制時CASE的SUM()

下面的查詢預計會返回最多2個結果,記錄爲2-0或1-1,具體取決於是DESC還是ASC。

我一直得到3 &的結果1.我不確定在哪裏添加限制。

SELECT SUM(CASE WHEN `winner` = 500 THEN 1 ELSE 0 END) AS wins, 
     SUM(CASE WHEN `loser` = 500 THEN 1 ELSE 0 END) AS losses 
FROM `schedule` 
WHERE 500 IN (`winner`, `loser`) 
ORDER BY `date` DESC 
LIMIT 2; 
+0

你能顯示你的表中的所有實際數據嗎? – Edper

+0

你需要我認爲的一個羣 – hjpotter92

+1

@Darryl Allen你會在幾分鐘內得到你的答案,只需發佈​​表結構和表格數據(選擇*)作爲時間表。 –

回答

1

如果我理解正確,爲了實現您的目標,您必須在子查詢中應用LIMIT。 原因是LIMIT在收集結果集的過程中最後適用。

SELECT SUM(CASE WHEN `winner` = 500 THEN 1 ELSE 0 END) AS wins, 
     SUM(CASE WHEN `loser` = 500 THEN 1 ELSE 0 END) AS losses 
FROM 
(
    SELECT * 
    FROM schedule 
    WHERE 500 IN (`winner`, `loser`) 
    ORDER BY `date` DESC 
    LIMIT 2 
) q 

這裏是SQLFiddle演示。

+0

peterm - 你震撼了它。 TY –