select 每行后的行与 if 条件

select rows after each row with if condition

首先抱歉英语不好! 二 我有一个 table 有许多记录 >5000 具有以下结构

 id | uid | uam(user after me) | plan
-------------------------------------
 1  |  4  |        4           |  1
-------------------------------------
 2  |  4  |        3           |  2
-------------------------------------
 3  |  4  |        1           |  2
-------------------------------------
 4  |  4  |        9           |  1
-------------------------------------
 5  |  4  |        6           |  1
-------------------------------------
 6  |  4  |        2           |  2
-------------------------------------
 7  |  4  |        1           |  1
-------------------------------------
 8  |  4  |        3           |  2
-------------------------------------

现在我想要 select 来自这个 table 和下面的 if/condition

select 行,其中 uam(我之后的用户)<= 在同一计划的这一行之后的计数行。换句话说,我们希望用户在达到uam数量后,有相同的计划和用户数量。

对于这个例子 table 应该是 return ids : 2, 3

如何使用 sql 或更好地使用 codeigniter 活动记录? 感谢您的帮助:)

对于每条记录,您需要检查后续记录的总和是否大于或等于该特定记录的 uam

EXISTS 的帮助下,您可以做到这一点:

SELECT 
*
FROM uamtable A 
WHERE EXISTS (
  SELECT 
  1
  FROM uamtable B 
  WHERE A.ID < B.ID AND A.plan = B.plan
  HAVING COUNT(*) >= A.uam
)

注:

A.ID < B.ID 约束强制仅计算具有相同计划的后续记录。

SEE DEMO