MySql选择连续行中的最大行数

时间:2013-07-24 23:47:07

标签: mysql hql

我有这张桌子:

player_id   goals   date
1           0       16/06
1           1       17/06
1           4       18/06
1           1       19/06
1           0       20/06

我需要的是获得玩家1得分至少达到目标的连续匹配数。

在此示例中,查询的结果应类似于:

player_id    num_continuous_days
1            3

行的顺序是日期列。是否有可能在mysql中实现这一点?

我正在使用Hibernate和HQL进行查询,如果可以使用HQL完成奖励积分(我对此表示怀疑)。如果没有其他办法,我愿意使用存储过程,并将java编程逻辑作为最后一种措施。

1 个答案:

答案 0 :(得分:1)

尝试

SELECT player_id, COUNT(*) num_continuous_days
  FROM
(
  SELECT player_id, goals, date, IF(goals = 0, @n := @n + 1, @n) g
    FROM Table1, (SELECT @n := 0) n
   ORDER BY player_id, date
) q
 WHERE goals > 0
 GROUP BY player_id, g

输出:

| PLAYER_ID | NUM_CONTINUOUS_DAYS |
-----------------------------------
|         1 |                   3 |

这是 SQLFiddle 演示