1

合計4行あります。チームID500は3勝1敗。

以下のクエリは、DESC か ASC かに応じて、最大 2 つの結果、2-0、または 1-1 のいずれかのレコードを返すことが期待されます。

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;
4

1 に答える 1

2

私があなたを正しく理解している場合、あなたの目標を達成する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 のデモです。

于 2013-06-20T02:42:43.463 に答える